编制MFC应用程序/clr(第1步:联反对动态Dll)
题
我已经成功地升级MFC应用程序,它是编制一个老版本的开发工作室Visual Studio2008年。一个非常小的数目的变化是必要的,因为一些重大变化MFC。现在,一切工作,我还想采取下一步行动和编写的解决方案 /clr
.
为此,我已经找到了有用的信息MSDN网站上:
下面是步骤,我们:
- 设置 Runtime Library 要 多线程的调试DLL(/MDd).
- 设置 使用的MFC 要 使用MFC在共享DLL.
然而,这样做可以防止我从联项目:
参考
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
?
解决方案
当使用MFC在一个共同问题,必须AUX_DATA dllimport
ed。
extern __declspec(dllimport) AUX_DATA afxData
线状态,而不是使用模板课程,用这个
AFX_MODULE_THREAD_STATE* pState = _AFX_CMDTARGET_GETSTATE()->m_thread;
AFX_THREAD_STATE* pState = AfxGetThreadState();
根据国家信息需要。例如,请参阅 在这里, 一些成员被转移到模块状态的修复是一个错误。注意AfxGetModuleThreadState存在,但是没有证件的和可以改变未来版本。
赢得国家没有按门铃,它是如何使用?有可能是一种新的方式来完成它。
不隶属于 StackOverflow