草庐IT

c++ - 在头文件中定义所有库是不好的做法吗?

如果我有一段代码,比如main.cpp需要在myheader.h中定义的类,然后包含所有库/header是不好的做法吗myheader.h文件中的main.cpp是否需要?如果是,为什么?考虑到main.cpp在没有myheader.h的情况下将无法工作。抱歉,如果这个问题有点简单-我只是不确定跨多个文件进行分隔的常见做法。 最佳答案 一般来说,你应该只包含当前文件中需要的那些东西。好的,所以main.cpp使用myheader.h无论如何,为什么不包括,比如说,和myheader.h中的其他headermain.cpp需要哪些?因

c++ - 我如何同时使用 GTK 和 glut?

我知道为了编写一个GTK应用程序,我写了一堆代码来描述放在主窗口中的内容,然后我调用:gtk_main();在此之后的任何代码语句都不会被执行。现在假设我希望我的GTK应用程序显示我用glut编写的内容,它本身包含一堆关于需要设置什么图形等的语句,然后以语句结束:glutMainLoop();此后的任何内容都不会执行。所以我的问题是这两个语句中的任何一个都阻止我调用另一个。有没有办法在GTK小部件内执行过剩主循环?有没有一种方法可以编写代码,以某种方式同时调用GTK主循环和过剩主循环(但从主程序调用并在单独的X窗口中呈现,而不是在小部件中)?我觉得这可以用“线程”来完成......

c++ - 如何通过远程日志库记录可能导致程序崩溃的段错误和运行时错误?

通过远程日志库记录导致程序崩溃的段错误和运行时错误的技术是什么?语言是C++。 最佳答案 Hereisthesolutionforprintingbacktrace,whenyougetasegfault,例如发生此类错误时您可以做什么。这给您留下了将错误记录到远程库的问题。我建议保持信号处理程序尽可能简单,并将日志记录到本地文件,因为您不能假设,在发生段错误时,先前初始化的日志记录库可以正常工作。 关于c++-如何通过远程日志库记录可能导致程序崩溃的段错误和运行时错误?,我们在Stac

c# - C/C++ 到 C# 转换器或模拟器

假设我有一些可移植的非可视化库的C代码。代码主要依赖于CRT(没有QT/DirectX/WinAPI等依赖项)。有没有办法在C#应用程序中使用此代码?我了解托管C++,这对我来说不是一种可接受的方式。我想到了一个可以用于自动翻译的C/C++到C#转换器(我不需要一个可读输出,一个可以工作的就足够了)或者一个我可以使用的模拟器执行已编译的C/C++代码。您是否知道任何可以帮助我从C#代码使用现有C/C++代码的方法?编辑:P/Invoke也不是一个可以接受的方式。以及调用外部EXE或使用COM/ActiveX。我需要能够将C和C#代码合并到一个托管DLL或EXE中的东西。现有的C代码是库

c++ - pthreads 中的内存模型规范

使用pthread是否可以保证一个线程中的内存写入何时在其他线程中可见?与Java相比,Java语言规范有一个sectionthatspecifiestheinteractionoflocksandmemory这使得编写可移植的多线程Java代码成为可能。是否有相应的pthreads规范?当然,您总是可以让共享数据变得不稳定,但这不是我想要的。如果这取决于平台,是否有事实上的标准?还是应该使用另一个线程库? 最佳答案 POSIX在4.11MemorySynchronization中指定内存模型:Applicationsshallen

c++ - 为什么它不需要链接库?

#include#includeintmain(){printf("%f",roundf(3.14));}我编译上面的代码(没有使用-lm),添加使用ldda.out,结果是linux-vdso.so.1=>(0x00007fffab9ff000)libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6(0x00007fd6da0f8000)/lib64/ld-linux-x86-64.so.2(0x00007fd6da4eb000)为什么a.out没有链接到libm但可以使用roundf(或类似sqrt的东西)?我已经使用nm来测试libc.so.6和ld

c++ - 为什么我必须为 LLVM 链接这些库两次?

我正在尝试编译示例LLVM程序。链接器步骤使用此命令。llvm-config-3.2--ldflags--libs这会产生以下命令。g++-obin/Debug/test-llvmobj/Debug/main.o-L/usr/lib/llvm-3.2/lib-lpthread-lffi-ldl-lm(aboatloadofLLVMlibrarieshere)但是,它无法链接。我收到这样的错误。undefinedreferencetoffi_type_float因此,我在末尾添加了-lffi和-ldl。g++-obin/Debug/test-llvmobj/Debug/main.o-L/

c++ - 包含在 Qt Creator 中添加外部库的路径?

我正在尝试将预编译(MSVC2012)OpenCV静态库包含到QtCreator中,但我不确定包含路径是关于这张图片的:这是我下载的预编译OpenCV文件的图像:有3个目录:bin包含DLL,lib包含小的lib文件(2kb)以便QtCreator可以理解DLL,staticlib包含大的lib文件(1mb),它们是我正在尝试的静态库链接反对。库文件/路径类似于C:\opencv\build\x86\vc11\staticlib\opencv_features2d247d.lib,对吧?大约有50个lib文件。我必须手动对每一个进行操作吗? 最佳答案

c++ - 使用与 double 数组的内存匹配的 std::vector

我正在尝试连接两个现有代码库——一个使用C,另一个使用C++。C++代码使用std::vector而另一个基于double组。我想从C代码传递double组,在C++代码中对std::vectors执行操作,并最终将这些操作反射(reflect)在double组中。是否可以创建一个std::vector来匹配double数组占用的内存?我尝试了几种选择,但它们都涉及创建一个新vector和将double数组的拷贝复制到该vector中。例如:voidfcn(double*a,intsizeofa){std::vectorvect_a;vect_a.assign(a,a+sizeofa)

C++ 静态类成员未在 * 静态库中初始化 *

我目前正面临一个恼人的C++问题。其实,我什至不明白为什么我在过去的20年里没有面对它:(在我当前的上下文中,我们大量使用与我们的专有静态库静态链接的C++可执行文件(主要在Linux嵌入式系统中)。出于技术和优化原因,我们确实使用静态库。在过去的几年里,的确,我曾经创建过共享库...于是开始写一些静态类成员的类。例如:classInner{public:Inner(){std::cout非常基本的用例,不是吗?但在我的单元测试中,与lib链接,我无法在控制台中看到std::cout语句。然而,如果我将我的类Inner和A移动到可执行源代码中......它工作正常。我确信这是一个非常基