草庐IT

c++ - 如何解决第三方库中的警告 C4505?

我有一个项目将Crypto++用于一些散列函数。最近,我决定清理一下,在MSVC++上使用4级警告。这是我的源代码的样子:#pragmawarning(push)#pragmawarning(disable:4100)//Unreferencedformalparameter#pragmawarning(disable:4244)//Conversion,possiblelossofdata#pragmawarning(disable:4512)//Assignmentoperatorcouldnotbegenerated#pragmawarning(disable:4127)//Co

使用 C 库头文件的 C++ 程序将 "this"识别为关键字。外部 "C"错误?

我的C++程序需要使用外部C库。因此,我正在使用extern"C"{#include}我需要使用的每个模块的语法。到现在为止它运行良好。一个模块在其一个头文件中使用this名称作为一些变量。C库本身编译良好,因为据我所知,this从来都不是C中的关键字。但尽管我使用了extern"C"语法,当我包含该头文件时,我的C++程序出现错误。如果我将C库头文件中的每个this重命名为_this之类的名称,一切似乎都很好。问题是:extern"C"语法不应该足以向后兼容吗?至少在语法级别,对于头文件?这是编译器的问题吗? 最佳答案 Shoul

使用 C 库头文件的 C++ 程序将 "this"识别为关键字。外部 "C"错误?

我的C++程序需要使用外部C库。因此,我正在使用extern"C"{#include}我需要使用的每个模块的语法。到现在为止它运行良好。一个模块在其一个头文件中使用this名称作为一些变量。C库本身编译良好,因为据我所知,this从来都不是C中的关键字。但尽管我使用了extern"C"语法,当我包含该头文件时,我的C++程序出现错误。如果我将C库头文件中的每个this重命名为_this之类的名称,一切似乎都很好。问题是:extern"C"语法不应该足以向后兼容吗?至少在语法级别,对于头文件?这是编译器的问题吗? 最佳答案 Shoul

c++ - 基于 C/C++ 插件的系统的良好模式?

在开发基于C/C++(=2?)插件的框架以及需要支持实时交换的共享对象/动态库时,哪些示例有助于查看实现细节?谢谢。注意:这里的重点是实时交换,不需要重启系统是必需的 最佳答案 如果您使用的是POSIX,dlopen()、dlsym()和dlclose()就足够了。有关详细信息和示例,请参阅mandlsym。有一个不错的article关于加载动态库,插件基础设施就是一个例子。EDITOP将Windows作为要求添加,因此这种方法无济于事,因为Windows不符合POSIX标准。但是WinAPI中也有类似的功能-参见here.

c++ - 基于 C/C++ 插件的系统的良好模式?

在开发基于C/C++(=2?)插件的框架以及需要支持实时交换的共享对象/动态库时,哪些示例有助于查看实现细节?谢谢。注意:这里的重点是实时交换,不需要重启系统是必需的 最佳答案 如果您使用的是POSIX,dlopen()、dlsym()和dlclose()就足够了。有关详细信息和示例,请参阅mandlsym。有一个不错的article关于加载动态库,插件基础设施就是一个例子。EDITOP将Windows作为要求添加,因此这种方法无济于事,因为Windows不符合POSIX标准。但是WinAPI中也有类似的功能-参见here.

c++ - 从调用堆栈中获取函数名

我正在开发一个调用native代码的Android程序。该native代码存在段错误,并且由于通过androidNDK进行调试并不是真正可行的,所以我留下了一个如下所示的调用堆栈(从ddms捕获)。我的问题是,我是否可以在事后手动运行某些东西,将调用堆栈中的内存地址转换为函数名称,这样我就可以看到这是哪里出现了段错误。谢谢02-2214:47:39.231:DEBUG/dalvikvm(504):Tryingtoloadlib/data/data/android.TestApp/lib/libDM.so0x43b7c93802-2214:47:39.301:DEBUG/dalvikvm

c++ - 从调用堆栈中获取函数名

我正在开发一个调用native代码的Android程序。该native代码存在段错误,并且由于通过androidNDK进行调试并不是真正可行的,所以我留下了一个如下所示的调用堆栈(从ddms捕获)。我的问题是,我是否可以在事后手动运行某些东西,将调用堆栈中的内存地址转换为函数名称,这样我就可以看到这是哪里出现了段错误。谢谢02-2214:47:39.231:DEBUG/dalvikvm(504):Tryingtoloadlib/data/data/android.TestApp/lib/libDM.so0x43b7c93802-2214:47:39.301:DEBUG/dalvikvm

c++ - 了解 OpenGL

我有一些关于OpenGL的基本观点/问题,不仅涉及代码,还涉及概念。如果您能回答、肯定或扩展其中任何一个,我将不胜感激。我警告你,有些人可能很幼稚,所以请多多包涵。我知道OpenGL只是一个标准,而不是一个软件。例如,“获取”OpenGL实际上涉及获取第三方实现,该实现不一定必须得到Khronos的认可。OpenGL通常指的是GL实用程序(GLU)和GL实用程序工具包(GLUT)的组合。它们有以glu和glut开头的方法,分别是。而以gl开头的“基本”OpenGL方法是由那些制作图形驱动程序的公司实现的,例如NVIDIA?我假设glut方法是特定于操作系统的助手,例如glutKeybo

c++ - 了解 OpenGL

我有一些关于OpenGL的基本观点/问题,不仅涉及代码,还涉及概念。如果您能回答、肯定或扩展其中任何一个,我将不胜感激。我警告你,有些人可能很幼稚,所以请多多包涵。我知道OpenGL只是一个标准,而不是一个软件。例如,“获取”OpenGL实际上涉及获取第三方实现,该实现不一定必须得到Khronos的认可。OpenGL通常指的是GL实用程序(GLU)和GL实用程序工具包(GLUT)的组合。它们有以glu和glut开头的方法,分别是。而以gl开头的“基本”OpenGL方法是由那些制作图形驱动程序的公司实现的,例如NVIDIA?我假设glut方法是特定于操作系统的助手,例如glutKeybo

c++ - C 和 C++ 静态链接 : just a copy?

当有人静态链接一个.lib时,链接器会将lib的全部内容复制到最终的可执行文件中还是只复制目标文件中使用的函数? 最佳答案 整个图书馆?--没有。只是你调用的函数?--没有。还有别的吗?--是的。它肯定不会扔到整个库中。但它也不一定只包括“目标文件中使用的函数”。链接器将创建一个递归构建的列表,列出库中的哪些对象模块满足您的undefinedsymbol。然后,它将包含这些对象模块中的每一个。通常,一个给定的对象模块将包含多个函数,如果其中一些没有被您做调用的函数调用,您将获得一些函数(和数据对象))你不需要的。