プロが教える店舗&オフィスのセキュリティ対策術

vs2010の開発環境で、mfcアプリケーションを作成しています。
mfc拡張DLLを追加すると、LNK2019が発生し、リンクが失敗します。
( LNK2019 : 未解決の外部シンボル / unresolved external symbol )
同様の作業をvs2005、vs2008で行っても、このエラーは発生しません。
また、vs2005、vs2008のソリューションファイルをvs2010に変換しても、このエラーは発生しません。
プロパティを比較しましたが、解決に至っておりません。
解決方法をご存知の方、ご教示ください。
よろしくお願いいたします。

A 回答 (1件)

通常のLNK2019であれば他にログが出ていると思いますので、それも記載してください。

この回答への補足

ありがとうございます。
情報不足で申し訳ありません。

構成
  MFCExtDLL(.exe)
  ExtDLL(.dll)
の構成で、ExtDLLに、cTestクラスを追加し、
MFCExtDLLのMFCExtDLL.cppに、cTestのインスタンス宣言だけしています。
このため、コンストラクタとデストラクタのLNK2019が出ています。

以下、リンク時のエラーログです。

このエラーログで気が付いたのですが、コンパイルオプションで、何故か
/D _AFXDLL
が出力されています。このせいでしょうか?

ちなみに、C/C++プロプロセッサの定義
WIN32;_WINDOWS;_DEBUG;%(PreprocessorDefinitions)
で、%(PreprocessorDefinitions)の定義の確認方法が分かりません。


----
2013/07/24 18:49:29 にビルドを開始しました。
1>ノード 3 上のプロジェクト "C:\Users\xxx\Documents\Visual Studio 2010\Projects\MFCExtDLL\MFCExtDLL\MFCExtDLL.vcxproj" (rebuild ターゲット)。
1>InitializeBuildStatus:
"Debug\MFCExtDLL.unsuccessfulbuild" のタッチ タスクを実行しています。
ClCompile:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /I..\ExtDLL /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D _UNICODE /D UNICODE /D _AFXDLL /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yc"StdAfx.h" /Fp"Debug\MFCExtDLL.pch" /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt stdafx.cpp
stdafx.cpp
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /I..\ExtDLL /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _WINDOWS /D _DEBUG /D _UNICODE /D UNICODE /D _AFXDLL /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yu"StdAfx.h" /Fp"Debug\MFCExtDLL.pch" /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt MFCExtDLL.cpp MFCExtDLLDlg.cpp
MFCExtDLLDlg.cpp
MFCExtDLL.cpp
コードを生成中...
ResourceCompile:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe /D _DEBUG /D _UNICODE /D UNICODE /D _AFXDLL /l"0x0411" /IDebug\ /nologo /fo"Debug\MFCExtDLL.res" MFCExtDLL.rc
ManifestResourceCompile:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe /nologo /fo"Debug\MFCExtDLL.exe.embed.manifest.res" Debug\MFCExtDLL_manifest.rc
Link:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\MFCExtDLL\Debug\MFCExtDLL.exe" /INCREMENTAL /NOLOGO /MANIFEST /ManifestFile:"Debug\MFCExtDLL.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\MFCExtDLL\Debug\MFCExtDLL.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /ENTRY:"wWinMainCRTStartup" /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:\Users\xxx\Documents\Visual Studio 2010\Projects\MFCExtDLL\Debug\MFCExtDLL.lib" /MACHINE:X86 Debug\MFCExtDLL.res
Debug\MFCExtDLL.exe.embed.manifest.res
Debug\MFCExtDLL.obj
Debug\MFCExtDLLDlg.obj
Debug\stdafx.obj
1>MFCExtDLL.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: __thiscall cTest::cTest(void)" (__imp_??0cTest@@QAE@XZ) が関数 "void __cdecl `dynamic initializer for 'test''(void)" (??__Etest@@YAXXZ) で参照されました。
1>MFCExtDLL.obj : error LNK2019: 未解決の外部シンボル "__declspec(dllimport) public: __thiscall cTest::~cTest(void)" (__imp_??1cTest@@QAE@XZ) が関数 "void __cdecl `dynamic atexit destructor for 'test''(void)" (??__Ftest@@YAXXZ) で参照されました。
1>C:\Users\xxx\Documents\Visual Studio 2010\Projects\MFCExtDLL\Debug\MFCExtDLL.exe : fatal error LNK1120: 外部参照 2 が未解決です。
1>プロジェクト "C:\Users\xxx\Documents\Visual Studio 2010\Projects\MFCExtDLL\MFCExtDLL\MFCExtDLL.vcxproj" (rebuild ターゲット) のビルドが終了しました -- 失敗。

ビルドに失敗しました。

経過時間 00:00:03.83

補足日時:2013/07/24 19:15
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!