【发布时间】:2009-05-27 07:46:15
【问题描述】:
我已成功将使用旧版 Developer Studio 编译的 MFC 应用程序升级到 Visual Studio 2008。由于 MFC 中存在一些重大更改,因此需要进行少量更改。现在一切正常,我想采取下一步并使用/clr 编译解决方案。
为此,我在 MSDN 网站上找到了有用的信息:
以下是我采取的步骤:
- 将运行时库设置为多线程调试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?
【问题讨论】: