古いバージョンのDeveloperStudioでコンパイルされたMFCアプリケーションをVisualStudio2008に正常にアップグレードしました。MFCにいくつかの重大な変更があったため、必要な変更はごくわずかでした。すべてが機能するようになったので、次のステップに進み、を使用してソリューションをコンパイルします/clr
。
そのために、MSDNWebサイトで役立つ情報を見つけました。
これが私が取ったステップです:
- ランタイムライブラリをマルチスレッドデバッグDLL(/ MDd)に設定します。
- 共有DLLでMFCを使用するようにMFCの使用を設定します。
ただし、そうすると、プロジェクトをリンクできなくなります。
への参照は
afxData
解決できなくなりました。どういうわけか、afxData
MFCに対して静的にリンクしている場合にのみ表示されます。私のコードには、次の宣言があります。extern AFX_DATA AUX_DATA afxData;
これは、静的にリンクされたMFCバージョンで正常に機能します。
_afxThreadState
とへの参照_afxWinState
も解決できません。
完全なエラーメッセージは次のとおりです。
error LNK2001: unresolved external symbol "struct AUX_DATA afxData" (?afxData@@3UAUX_DATA@@A)
error LNK2001: unresolved external symbol "class CThreadLocal<class _AFX_THREAD_STATE> _afxThreadState" (?_afxThreadState@@3V?$CThreadLocal@V_AFX_THREAD_STATE@@@@A)
error LNK2001: unresolved external symbol "class CProcessLocal<class _AFX_WIN_STATE> _afxWinState" (?_afxWinState@@3V?$CProcessLocal@V_AFX_WIN_STATE@@@@A)
これが名前マングリングに関連している可能性がある場合に備えて...
それで、MFCに対して動的にリンクするために何ができますが、それでも参照afxData
し_afxThreadState
ます_afxWinState
か?