Visual studio VS6.0中的LNK2019错误->;VS2013迁移的MFC DLL项目
在尝试将大型VS6.0 DLL项目构建/移植到VS2013(其中DLL模块依赖于其他DLL模块)时,出现以下链接错误。未定义函数的独特之处在于它使用CString参数,但问题可能比这更明显:Visual studio VS6.0中的LNK2019错误->;VS2013迁移的MFC DLL项目,visual-studio,visual-c++,visual-studio-2013,linker-errors,msdn,Visual Studio,Visual C++,Visual Studio 2013,Linker Errors,Msdn,在尝试将大型VS6.0 DLL项目构建/移植到VS2013(其中DLL模块依赖于其他DLL模块)时,出现以下链接错误。未定义函数的独特之处在于它使用CString参数,但问题可能比这更明显: error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall CTokenEx::Split(class ATL::CStringT<char,class StrTraitMFC_DLL
error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall CTokenEx::Split(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,class CStringArray &,int)" (__imp_?Split@CTokenEx@@QAEXV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@0AAVCStringArray@@H@Z) referenced in function "public: bool __thiscall OptionFlag::isTestEnableByFlag(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >)" (?isTestEnableByFlag@OptionFlag@@QAE_NV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)
当然,我需要再次三次检查我是否正在阅读这个确切的.exp/.lib,这是/Verbose告诉我的
在这种特殊情况下,我遇到的所有问题都是DLL“x”引用DLL“y”中的函数的情况,该函数有一个CTokenEx::Split()函数,该函数具有CString参数。我原以为问题是CSTring MFC vs ATL声明(见下面的链接),现在我不太确定,所以在这里发布后,我将回到第一步。(也就是说,我是不是漏掉了一个打字错误?是吗?)
我已经做了以下工作来隔离问题
生成属性:并尝试对CString类型的dllimport进行硬编码。
关于MFC和CRT CSTring定义。不是100%确定这就是问题所在。(可能是我在争论中遗漏了什么。)
mylib.lib 而不是
path\to\Mylib.lib 这是一条主要线索:) 所以。。。我认为这是一个复杂而奇怪的链接器问题。这是一个好主意!啊!易链接器问题 问题解决了,就这么简单。
00000148 DIR32NB 00000000 20 $N00027
00000094 DIR32NB 00000000 4F ?Split@CTokenEx@@QAEXV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@0AAVCStringArray@@H@Z (public: void __thiscall CTokenEx::Split(class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,class ATL::CStringT<char,class StrTraitMFC_DLL<char,class ATL::ChTraitsCRT<char> > >,class CStringArray &,int))
0000014C DIR32NB 00000000 21 $N00028
3E30 ?Split@CTokenEx@@QAEXV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@0AAVCStringArray@@H@Z
3E30 __imp_?Split@CTokenEx@@QAEXV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@0AAVCStringArray@@H@Z