変数をエクスポートしてdllで使用する通常のMFCアプリケーションがあります。ここには、hereのようなexe/dllの宣言/定義の要約があります。DLLで使用するEXEから変数をエクスポートする際に問題が発生する
__declspec(dllexport) BOOL g_status; // In EXE
__declspec(dllimport) BOOL g_status; // in DLL
リンカーのエラーは、名前のマングリングのために見つけることができないと思われるようですか?
error LNK2001: unresolved external symbol "__declspec(dllimport) int g_status" ([email protected]@3HA)
は、その後、私はそれが宣言になることがforces実際のexe側にextern "C"' to declaration in dll but it doesn't work because if I use C decorations on dll, the same has to be done on exe side as well but using 'extern "C"
を追加し、この組み合わせを試してみました!リンカエラー以下
__declspec(dllexport) BOOL g_status; // in EXE
extern "C" __declspec(dllimport) BOOL g_status; // in DLL
:
error LNK2001: unresolved external symbol __imp__g_status
私は少し失われています。私は関数で多くの例を見ていますが、変数を多く持たない人、それらをエクスポートする方法、そして名前の装飾がまだ有効かどうかは分かりません。
あなたの最初の「EXE」は 'dllimport'を示し、' dllexport'は – franji1
@ franji1です。これは投稿の入力ミスです。 – zar
これはほとんどの場合、循環依存として終了します。 EXEをリンクするまで、DLLをリンクすることはできません。しかし、DLLをリンクするまで、EXEをリンクすることはできません。それは[正式に可能です](https://stackoverflow.com/questions/2727020/what-is-use-of-exp-and-what-is-the-difference-between-lib-and-dll)ですが、そうではありませんIDEによって直接サポートされています。もちろん、その変数のホームになるために別のDLLが必要な場合は、もちろん避けてください。あなたはおそらくそれのためのいくつかの使用を見つけるでしょう。 –