在* .cpp文件中,尝试使用第三方lib:
#define DLL_IMPORT
#include <thirdParty.h>
// Third party header has code like:
// #ifdef DLL_IMPORT
// #define DLL_DECL __declspec(dllimport)
// fatal error C1001: An internal error has occurred in the compiler.
替代:
#define NO_DLL
#include <thirdParty.h>
// Third party header has code like:
// #elif defined(NO_DLL)
// #define DLL_DECL
// Compiles fine, but linker errors as can't find DLL functions
我可以通过删除宏和#define一起重现结果并手动编辑第三方文件以便__declspec(dllimport) - 所以上面的预处理器只是为了显示正在发生的事情,它不是复制粘贴。
有没有人遇到类似的东西,或者可以暗示原因? (使用CMake创建)。上面是崩溃的2行* .cpp的实际例子,所以它缩小到#include中的某些内容。
以下也可以正常工作:
我已经搜索了两个项目的项目设置页面,试图找出差异,但是空白了。当然,我可能会遗漏一些东西,因为那些设置页面不是最容易导航的。我将在一天左右的时间内访问VS2008,因此可以与之进行比较。第三方库是MySql ++。
答案 0 :(得分:1)
编译器崩溃绝对是编译器中的一个错误,因此您最好向Microsoft Visual C ++团队提交错误报告。
至于错误
#define DLL_DECL __declspec(dllimport)
是错误的做事方式。应该设置一些项目设置,如果DLL_DECL
可以定义预处理指令,或者只是包含不同的文件。
答案 1 :(得分:0)
原来这是因为试图使用DLL的项目打开了预编译头文件。