您现在的位置: 软界网软界问答软件开发其他 > 问题显示
我要提问    
提示:提问和回答别人的问题均可赢得积分
加入收藏我要投诉 我来回答
此问题已经被浏览111次,收藏:0次. 所属类别:[其他]
问题:VC6静态连接的一个问题!!!!?
我用VC6静态连接经常出现的一个问题,当一个工程采用静态连接时(不管是在debug还是release时),最后会出如下的错误
nafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMT.lib(new.obj)
nafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in LIBCMT.lib(delete.obj)
Release/AnsPV5.exe : fatal error LNK1169: one or more multiply defined symbols found
改用动态链接就没有问题,而且好像每次都说是new和delete重复定义。帮助说往往是因为单线程库和多线程库混用了,我查了一下,其实工程里设置的是多线程库。如果将错误信息中报重复定义的nafxcw.lib库和LIBCMT.lib任意强行去掉一个,就有很多函数找不到原型,说明这两个库是工程所必须的,这是什么原因呢,有高手能够帮帮忙吗?
问题是,如果我不采用静态连接,必须拷贝很多动态库,而且那些是必须的动态库,我往往也不清楚。
提问时间:2006-11-12 16:01:53 回答次数:(12) 提问人:软界网友 我来回答
回答(1)
我以前也碰到过此问题

但好像改成多线程库就可以了啊 Debug Multithreaded 就没问题了啊

如果你想动态链接的话,一般COPY常用的DLL(mfc42.dll msvcrt.dll等), 稍微不太常见的就自己到MSDN下查他所在库了...
回答人:软界网友 我来回答
回答(2)
工程中的设置本来就是Debug Multithreaded和Multithreaded,我也改过,不行的,不知道为什么。
本来有些小程序不大,但要拷贝动态库,其实比静态连接大多了。但我已经好多次碰到这个问题了,烦死了。
回答人:软界网友 我来回答
回答(3)
我是新生成一个Use MFC in a Static Library工程,然后再程序中一添加new和delete就出问题,急呀!
回答人:软界网友 我来回答
回答(4)
project->setting->link->category:input->ignore libraries->nafxcw.lib(lib from error info)
回答人:软界网友 我来回答
回答(5)
楼主试下按原来的代码在Use MFC in a shared DLL工程下试试
回答人:软界网友 我来回答
回答(6)
3m2u:我试过,如果忽略nafxcw或者LIBCMT,则肯定有许多需要的函数找不到了。
rain:用动态库是可以,但为什么静态库不行呢,很多时候我希望用静态库呀。
回答人:软界网友 我来回答
回答(7)
我以前遇到这种问题的时候用这种方法没问题啊。编译出来的程序也能用啊。你不行么。试试看
回答人:软界网友 我来回答
回答(8)
3m2u:试的结果(很多错误,部分如下):
Linking...
AnsPV5.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
ChildView.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
MainFrm.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
StdAfx.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
如果停用LIBCMT也是相似的,只不过是另外一些函数unresolved了。
回答人:软界网友 我来回答
回答(9)
我还是给自己加分吧,但是不是不可以呀?问题找到了:
我另外写了一些类,在类的实现文件中加上#include "stdafx.h"就行了。
但实际上这有些讲不通,我写的类是通用的类,没有用到MFC的,应该不用包含的呀,否则就有问题了,而且采用动态库就可以了,这是不是MFC考虑不周到的一个地方呢?
感谢诸位的帮助,谢谢!
回答人:软界网友 我来回答
相关问题
关键字: obj,工程,nafxcw,如果,gt,unresolvedexternalsymbol__afxForceEXCLUDE,errorLNK2001,很多,void,多线程库,问题了,错误,而且,必须,不行,什么
我来回答
验证码