*.cpp ファイルで、サード パーティのライブラリを使用しようとしています。
#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 内の何かに絞り込まれます。
以下も正常に動作します。
- ライブラリのせいではないように、dllimport/export を使用するサード パーティ (彼らは *.sln を提供します) によって提供された例をコンパイルします。
- 本番プロジェクトの一部としてサードパーティの lib をコンパイルします (したがって、dllexport は正常に動作します)。
2 つのプロジェクトのプロジェクト設定ページを調べて違いを見つけようとしましたが、何も表示されませんでした。もちろん、これらの設定ページはナビゲートするのが最も簡単ではないため、何かが欠けている可能性があります. 1日かそこらでVS2008にアクセスできるようになるので、それと比較できます。サードパーティ ライブラリは MySql++ です。