小弟写的工程,前天还能运行,昨天改了一小段,出现错误。nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in MSVCRTD.lib(MSVCRTD.dll)
nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) already defined in MSVCRTD.lib(MSVCRTD.dll)
GetnetView.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall IcqLink::destroySession(char const *,unsigned long)" (?destroySession@IcqLink@@UAEXPBDK@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CBasicWnd::~CBasicWnd(void)" (??1CBasicWnd@@UAE@XZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CImageTabWnd::~CImageTabWnd(void)" (??1CImageTabWnd@@UAE@XZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall IcqLink::~IcqLink(void)" (??1IcqLink@@UAE@XZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: __thiscall CBasicWnd::CBasicWnd(void)" (??0CBasicWnd@@QAE@XZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: __thiscall CDlgB::CDlgB(class CWnd *)" (??0CDlgB@@QAE@PAVCWnd@@@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: __thiscall CDlgA::CDlgA(class CWnd *)" (??0CDlgA@@QAE@PAVCWnd@@@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: __thiscall CImageTabWnd::CImageTabWnd(void)" (??0CImageTabWnd@@QAE@XZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: __thiscall IcqLink::IcqLink(void)" (??0IcqLink@@QAE@XZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: static struct CRuntimeClass const CGetnetDoc::classCGetnetDoc" (?classCGetnetDoc@CGetnetDoc@@2UCRuntimeClass@@B)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetTabWnd(int,class CDialog *)" (?SetTabWnd@CImageTabWnd@@QAEXHPAVCDialog@@@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetToolTip(int,class CString)" (?SetToolTip@CImageTabWnd@@QAEXHVCString@@@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetTabRect(int,class CRect)" (?SetTabRect@CImageTabWnd@@QAEXHVCRect@@@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetTabImage(int,unsigned int)" (?SetTabImage@CImageTabWnd@@QAEXHI@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetTabCount(int)" (?SetTabCount@CImageTabWnd@@QAEXH@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetBottomImage(unsigned int)" (?SetBottomImage@CImageTabWnd@@QAEXI@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetTopImage(unsigned int)" (?SetTopImage@CImageTabWnd@@QAEXI@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetRightImage(unsigned int)" (?SetRightImage@CImageTabWnd@@QAEXI@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetLeftImage(unsigned int)" (?SetLeftImage@CImageTabWnd@@QAEXI@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CImageTabWnd::SetBkImage(unsigned int)" (?SetBkImage@CImageTabWnd@@QAEXI@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: static bool __cdecl IcqDB::loadOptions(class IcqOption &)" (?loadOptions@IcqDB@@SA_NAAVIcqOption@@@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall CGetnetApp::setDBDir(unsigned long)" (?setDBDir@CGetnetApp@@QAEXK@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "public: unsigned short __thiscall ServerSession::login(char const *,unsigned long)" (?login@ServerSession@@QAEGPBDK@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "protected: void __thiscall IcqLink::destroyUser(void)" (?destroyUser@IcqLink@@IAEXXZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall ServerSession::sendKeepAlive(void)" (?sendKeepAlive@ServerSession@@QAEXXZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall IcqLink::checkSendQueue(void)" (?checkSendQueue@IcqLink@@QAEXXZ)
GetnetView.obj : error LNK2001: unresolved external symbol "public: void __thiscall ServerSession::connect(char const *,unsigned short)" (?connect@ServerSession@@QAEXPBDG@Z)
GetnetView.obj : error LNK2001: unresolved external symbol "protected: void __thiscall IcqLink::logout(void)" (?logout@IcqLink@@IAEXXZ)
GetnetView.obj : error LNK2001: unresolved external symbol "class IcqLink * icqLink" (?icqLink@@3PAVIcqLink@@A)
nafxcwd.lib(dcprev.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(timecore.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(filelist.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcwd.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
Debug/GetServer.exe : fatal error LNK1120: 32 unresolved externals
Error executing link.exe.GetServer.exe - 38 error(s), 0 warning(s)在project setting中先忽略这两个库nafxcw.lib,libcpmt.lib;然后再Object/Library modules中按nafxcw.lib,libcpmt.lib的顺序添加这两个库。这样做了之后,还是不行。
请高手帮帮小弟。谢谢各位!!!

解决方案 »

  1.   

    谢谢各位,我看了一下FileView,马上知道哪错了,结贴啦~~~
      

  2.   

    引起LNK2001的常见错误都有哪些
    遇到的LNK2001错误主要为:unresolved external symbol “symbol”
    如果链接程序不能在所有的库和目标文件内找到所引用的函数、变量或标签,将产生此错误信息。
    一般来说,发生错误的原因有两个:一是所引用的函数、变量不存在,拼写不正确或者使用错误;其次可能使用了不同版本的链接库。以下是可能产生LNK2001错误的原因:
    <1>由于编码错误导致的LNK2001错误
    (1)不相匹配的程序代码或模块定义(.DEF)文件导致LNK2001。例如,如果在C++源文件了内声明了一变量“var1”,却试图在另一个文件内以变量“var1”访问改变量。
    (2)如果使用的内联函数是在.cpp文件内定义的,而不是在头文件内定义将导致LNK2001错误。
    (3)调用函数时如果所用的参数类型和头函数声明时的类型不符将会产生LNK2001错误。
    (4)试图从基类的构造函数或析构函数中调用虚拟函数时将会导致LNK2001错误。
    (5)要注意函数和变量的可公用性,只有全局变量、函数是可公用的。静态函数和静态变量具有相同的使用范围限制。当试图从文件外部方位任何没有在该文件内声明的静态变量时将导致编译错误或LNK2001错误。
    <2>由于编译和联机的设置而造成的LNK2001错误
    (1)如果编译时使用的是/NOD(/NODERAULTLIB)选项,程序所需要的运行库和MFC时将得到又编译器写入目标文件模块,但除非在文件中明确包含这些库名,否则这些库不会被链接进工程文件。这种情况下使用/NOD将导致LNK2001错误
    (2)如果没有为wWinMainCRTStartup设定程序入口,在使用Unicode和MFC时将出现“unresolved external on _WinMain@16”的LNK2001错误信息。
    (3)使用/MD选项编译时,既然所有的运行库都被保留在动态链接库之内,源文件中对“func”的引用,在目标文件里即对“__imp__func”的引用。如果试图使用静态库LIBC.LIB或LIBCMT.LIB进行链接,将在__imp__func上发生LNK2001错误。如果不使用/MD选项编译,在使用MSVCxx.LIB链接时也会发生LNK2001错误。
    (4)使用/ML选项编译时,如用LIBCMT.LIB链接会在_errno上发生LNK2001错误。
    (5)当编译调试版的应用程序时,如果采用发行版模态库进行链接也会产生LNK2001错误;同样,使用调试版模态库链接发行版应用程序时也会产生相同的错误。
    (6)不同版本的库和编译器的混合使用也能产生问题,因为新版的库里可能包含早先的版本没有的符号和说明。
    (7)在不同的模块中使用内联和非内联的编译选项能够导致LNK2001错误。如果创建C++库时打开了函数内联(/Ob1或/Ob2),但是在描述该函数的相应头文件里却关闭了函数内联(没有inline关键字),只是将得到错误信息。为避免该问题的发生,应该在相应的头文件中用inline关键字标志为内联函数。
    (8)不正确的/SUBSYSTEM或ENTRY设置也能导致LNK2001错误。