VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误

原创 2016年06月02日 11:30:53

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时提示没有找到MSVCR80D.dll的解决办法

总结各种解决方法如下:      原因:(不知道在说啥)由于VS.net 2005 采用了一种新的DLL方案,搞成一个exe还要配有一个manifest文件(一般在嵌入文件里了,所以看不到,不过...

VS2005 Debug Runtime DLL

  • 2009年06月17日 09:32
  • 899KB
  • 下载

vs2005中动态i链接库DLL的一个简单例子

在vs2005中对动态链接库做实验,来一个详细的能跑通的例子: 1、打开vs2005,文件-》新建-》项目,选择“win32项目”,在“名称”中输入“vsdll ”,点“确定”-》下一步,在“应用程...

C#(C Sharpe)百度云推送sdk(DLL版)vs2005可用

在网上找了好久也没找到vs2005的sdk,经过1天的修改后 原来的sdk终于可以放到vs2005上运行了,给大家分享下下先。 (vs2005及以上都能运行) 【引用2个DLL,直接玩转推送...

在VS2005中使用VS2008编写的DLL在有些机器上无法运行解决办法

用VC2005编译的程序,编译时没有任何错误,但是运行时就是提示“应用程序正常初始化失败”!! 查找了各方面资料,做了各种尝试,网上说什么的都有:有让安装vc2005 sp1补丁的;有让安装vcred...

VS2005环境下C#调用C++ DLL 联调(win32及wince)

这篇文章让我看到了希望,忍不住转来: 原地址:http://space.itpub.net/12639172/viewspace-679365 再次表示谢意~ ---------...

vs2005 运行程序 出现没有找到MSVCP80D.dll 解决方法

没有找到MSVCP80D.dll 解决方法 在VS 2005中建立Win32工程时(以VS 2005中文版为例),你可能会遇到这样的运行错误:“没有找到MSVCP80D.dll,因此这个应用...

VS2005新建WINCE设备的DLL工程

一、       动态链接库简介 1.1 DLL概述 动态链接库(Dynamic Link Library, j简称DLL)是一些编译过的可执行的程序模块,可以在应用程序中或其他DLL中被调用。D...
  • jwc2436
  • jwc2436
  • 2014年07月10日 14:43
  • 846

PHP调用VS2005VC++写的dll控件

测试环境:windows +Apache(PHP)+VS2005 一、建立ATL工程 1、打开VS2005,新建空项目,我们这里建NFS(图1) 2、在解决方案中,添加 >>...

Compile ARPACK x64 dll & lib For VS2005 On Windows 7 by Using MinGW64

Author : Zeng qiang  Date : 2013-3-4     To Use ARPACK functions with C/C++ in VS2005 x64 mode, I've...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:VS2005 Debug版,dll /MTd,exe /MDd 跨dll使用CString的链接错误
举报原因:
原因补充:

(最多只允许输入30个字)