dll中使用Cstring类型,调用出现Error LNK2001错误

纪念我的第一篇博文。

出处:BOE:OLED监测系统V2。

关键字:Dll,MFC,Cstring,ATL,Error LNK2001

分析:
        在dll中使用了Cstring类型,Dll编译正常,MFC调用dll中函数时出现Error LNK2001错误。

        完整错误:Severity Code Description Project File Line Suppression State
Error LNK2001 unresolved external symbol "__declspec(dllimport) bool _cdecl SetIniFileString_Dll(wchar_t const ,wchar_t const ,wchar_t const *,class ATL::CStringT > >)" (_imp_?SetIniFileString_Dll@@YA_NPB_W00V?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z) OLED_V2 D:\wk\WorkProject\2017_05_24_OLED_V2\SoftWare\OLED_V2_06022_1\OLED_V2\SetDlg.obj 1


        depends(dll解析工具)分析发现:

        ?SetIniFileString_Dll@@YA_NPB_W00V?$CStringT@_WV?$StrTraitATL@_WV?$ChTraitsCRT@_W@ATL@@@ATL@@@ATL@@@Z

        ?SetIniFileString_Dll@@YA_NPB_W00V?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z)

        调用的函数和解析出的并不相同,导致LINK不到函数。

解决方法:
         CString 改为LPCTSTR

你可能感兴趣的:(C/C++,mfc,Bug)