Visual Studio 2005+MFC:链接器错误,即使已导出,也无法与构造函数链接

Visual Studio 2005+MFC:链接器错误,即使已导出,也无法与构造函数链接,mfc,visual-studio-2005,constructor,linker-errors,dllexport,Mfc,Visual Studio 2005,Constructor,Linker Errors,Dllexport,我有两个MFC项目,一个exe和一个dll。exe引用dll。我通过从exe项目中提取一些类来创建dll,这是我的起点 dll现在构建正常,但exe无法与dll类之一的构造函数链接。我试着对全班同学进行分类,但这给了我太多的警告,所以我选择了所有的公众成员。这解决了除构造函数之外的大多数链接错误 错误MsgBoxTest是exe,CustomMessageBoxDlg是dll: MsgBoxTestDlg.obj : error LNK2019: unresolved external symb

我有两个MFC项目,一个exe和一个dll。exe引用dll。我通过从exe项目中提取一些类来创建dll,这是我的起点

dll现在构建正常,但exe无法与dll类之一的构造函数链接。我试着对全班同学进行分类,但这给了我太多的警告,所以我选择了所有的公众成员。这解决了除构造函数之外的大多数链接错误

错误MsgBoxTest是exe,CustomMessageBoxDlg是dll:

MsgBoxTestDlg.obj : error LNK2019: unresolved external symbol "public: __thiscall CMessageBoxDialog::CMessageBoxDialog(class CWnd *,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,unsigned int,class CPoint,unsigned int)" (??0CMessageBoxDialog@@QAE@PAVCWnd@@V?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@1IVCPoint@@I@Z) referenced in function "private: void __thiscall CMsgBoxTestDlg::OnDisplayMessageBox(void)" (?OnDisplayMessageBox@CMsgBoxTestDlg@@AAEXXZ)
1>Debug\MsgBoxTest.exe : fatal error LNK1120: 1 unresolved externals
错误引用的构造函数用法:

//this is a CMsgBoxTestDlg, m_strMessage and m_strTitle are CStrings, nStyle is an UINT, initialPosition is a CPoint
CMessageBoxDialog dlgMessageBox(this, m_strMessage, m_strTitle, nStyle, initialPosition);
我尝试了一个干净的+建设,但没有雪茄


编辑:该类使用DECLARE_DYNAMIC和IMPLEMENT_DYNAMIC宏,并扩展了CDialog

解决了它!CString似乎可以解析为不同的类型,这取决于您在项目选项General->Character Set中使用的是Unicode字符还是多字节字符。我的dll使用Unicode,我的exe使用多字节。将dll更改为使用MB,它构建得很好

//this is a CMsgBoxTestDlg, m_strMessage and m_strTitle are CStrings, nStyle is an UINT, initialPosition is a CPoint
CMessageBoxDialog dlgMessageBox(this, m_strMessage, m_strTitle, nStyle, initialPosition);