編譯器崩潰在* .cpp文件,試圖用一個第三方的lib:__declspec(dllimport的)導致的MSVC 2010
#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
我可以重現通過刪除結果宏和#定義在一起,並手動編輯第三方文件以具有__declspec(dllimport)或不 - 因此上述預處理器的東西只是爲了顯示發生了什麼,它不是複製粘貼。
有沒有人碰到類似的話,也可以在事業暗示? (這是使用CMake創建的)。上面是2行* .cpp的實際例子,它崩潰了,所以它被縮小到#include中的某個東西。
下也很好地工作:
- 編譯由第三方(他們提供了一個*的.sln)使用dllimport的/出口提供的例子,因此不會顯得庫的故障
- 編譯第三方的lib作爲生產項目的一部分(以便DLLEXPORT正常工作)
我搜羅了兩個項目的項目設置頁面,試圖找出差異,但都拿出了空白。當然,這可能是我錯過了一些東西,因爲這些設置頁面並不是最容易瀏覽的。我將在一天左右訪問VS2008,因此可以與此進行比較。第三方庫是MySql ++。
您是指鏈接器崩潰,或者鏈接器報告錯誤LNKxxxx? – Ajay