VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
来源:互联网 发布:淘宝购物车营销靠谱吗 编辑:程序博客网 时间:2024/04/28 16:25
dll中导出函数
DLL_EXPORT void DoString(CString& str);
如果exe和dll都是/MD,一切正常
如果dll /MTd,exe /MDd 则找不到DoString,错误提示:
error LNK2019: 无法解析的外部符号 "__declspec(dllimport) void __cdecl DoString(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > &)" (__imp_?DoString@@YAXAAV?$CStringT@DV?$StrTraitMFC@DV?
$ChTraitsCRT@D@ATL@@@@@ATL@@@Z),该符号在函数 "public: void __thiscall CtestexeDlg::OnBnClickedButton1(void)" (?OnBnClickedButton1@CtestexeDlg@@QAEXXZ) 中被引用
1>../Debug\testexe.exe : fatal error LNK1120: 1 个无法解析的外部命令
用depend工具查看了dll导出的DoString,两者差距如下:
?DoString@@YAXAAV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)
?DoString@@YAXAAV?$CStringT@DV?$StrTraitMFC_DLL@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z
一个是StrTraitMFC,另一个是StrTraitMFC_DLL。
注意:
VS2005中,跨dll操作CString,只有dll和exe都是MD或MT,就正常。不一致,链接时报错。跨dll操作std::string,只有exe和dll都是MD才正常,其他情况不报错,直接崩溃。
- VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
- VS2005 Debug版,dll /MTd,exe /MDd的潜在bug
- MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
- MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题
- VS2005 编译的.exe 需要coredll.dll ?
- VC编译选项 多线程(/MT) 多线程调试(/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd)
- VC编译选项 多线程(/MT) 多线程调试(/MTd) 多线程 DLL (/MD) 多线程调试 DLL (/MDd)
- 昏天黑地MTd,MDd链接选项
- 昏天黑地MTd,MDd链接选项
- VS2005 Debug时提示没有找到MSVCR80D.dll的解决办法
- VS2005 Debug时提示没有找到MSVCR80D.dll的解决办法 .
- VS2005 Debug时提示没有找到MSVCR80D.dll的解决办法
- Dll的链接使用细节
- 多线程调试 DLL (/MDd)
- dll链接错误
- Qt-程序debug/release版本exe需要的dll文件
- dll中使用Cstring类型,调用出现Error LNK2001错误
- LNK 2019 dll导出的链接错误
- no session or session was closed处理方法2
- iOS设计模式 - (2)UML类间关系精解
- 拖动效果
- Oculus Rift正式发售,准备好开始迈向VR时代
- Java基础资料
- VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
- App Transport Security
- Android Studio代码调试技巧篇
- jpush 第一篇 (初步认识)
- UI(base)-2
- ACdream 1188 switch教学
- SpringMVC之文件上传(进度条显示)
- J2ee项目从0搭建(二):Maven下载、安装、eclipse+maven配置
- android常用的函数、判断、正则