VC6.0以及VS2005下 连接错误operator delete(void *)” (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)的解决方法
2013年10月13日 ? 综合 ? 共 829字 ? 字号 小 中 大 ? 评论关闭
VC6.0 下对于该问题的解决方法
昨天写了个小小的TCP的客服端负责接收数据并打印,在本机上写好后,测试也没问题但是放在另外一个PC上运行报告找不到一个lib库,后来就将程序改成了 using MFC Class Static library 模式 但是连接报告了这个错误 operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj) 当时真让人抓狂,根据网上搜索的信息,说是MFC自身lib 中也定义了new delete 操作 和CRUNTIME lib 中起冲突了,需要调整他们之间的顺序,后来参看msdn 文章【http://support.microsoft.com/default.aspx?scid=kb;en-us;148652】具体做法是 在项目属性中 选择 link 标签,选中 input 选项 在Object/library modules 上输入nafxcwd.lib libcmtd.lib Ignore libraries 输入nafxcwd.lib libcmtd.lib 重新编译就可以了 具体如图所示
修改项目了link选项
VS2005下问题解决方法
当时程序最初是在VS下写的后来将写好的程序放在别的电脑上出现缺少相应lib库,后来就将MFC Class Link 方式改成了 Static 方式
但是重新编译就开始报告了和后来在VC6.0下相同的错误,搜索了相应的网页发现,有些人提出的解决方法和VC6.0下一样,但是 按照那种方式修改不行,后来在继续查找在一个BBS上看到一个帖子,他的问题和我相似,都是编译release版本 没有问题,但是编译debug就不行
根据那个bbs上的帖子讲述进行如何修改
2.在preprocessor definitions中添加_AFXDLL
3.project options中,将/MTd改成/MDd(我的run-time library一律为Debug Multith
readed DLL)原来是/MTd
来源:oschina
链接:https://my.oschina.net/u/4000302/blog/3057726