我已成功将使用旧版 Developer Studio 编译的 MFC 应用程序升级到 Visual Studio 2008。由于 MFC 中的一些重大更改,需要进行少量更改。现在一切正常,我想采取下一步并使用/clr
.
为此,我在 MSDN 网站上找到了有用的信息:
以下是我采取的步骤:
- 将运行时库设置为Multi-threaded Debug DLL (/MDd)。
- 将 MFC 的使用设置为在共享 DLL中使用 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
?