精华内容
下载资源
问答
  • LNK2005
    2020-05-08 23:01:49

    当我们在visual Studio 中编译时,经常会发生这两个错误,通常这两个错误是同时产生的。

    产生原因

    找到一个或多个多重定义的符号

    生成因一个或多个符号的多个定义而失败。 该错误之前为错误 LNK2005。

    通常情况下,是因为不正确的使用导致的 变量或者函数名重名

    解决方案:

    1. 定位到错误的地点
      在LNK2005的错误的说明中可以找到
      错误 LNK2005 “private: static class GameMap * GameMap::ga_me” (?ga_me@GameMap@@0PEAV1@EA) 已经在 bigHomework.obj 中定义 Project1 …\Main.obj 1
    2. 删除部分代码,找到重定义所在
      因为一般情况下可能看不出来,所以尽量减少对应的变量名或者函数名,直到正确编译。

    提供一个我遇到的情况:

    class GameMap {
    private:
    	static GameMap* ga_me;
    	char gamemap[21][21];
    
    	GameMap() { memset(gamemap, 0, sizeof(gamemap)); }
    	~GameMap() { if (ga_me != NULL)delete ga_me; }
    public:
    	static
    		GameMap* getInstance() {
    		if (ga_me == NULL) {
    			ga_me = new GameMap();
    		}
    		return ga_me;
    	}
    };
    GameMap* GameMap::ga_me = NULL;//去掉这句话就是正确的
    

    错误说明:

    当初始化类中的static变量是,必须在类外指定值。
    在单例模式中初始化GameMap* GameMap::ga_me = NULL;时算是一次对变量名的定义
    ga_me = new GameMap();也当做了一次对变量名的重新定义。
    因此,就产生了这两个错误。

    我的改正办法是:
    直接删掉GameMap* GameMap::ga_me = NULL;
    因为在指针没有显式初始化的情况下,默认的初始化为NULL,程序能够正确。

    更多相关内容
  • LNK2005:symbol already defined和LNK1169:one or more multiply defined symbols found
  • LNK2005错误

    2017-01-18 14:25:43
    LNK2005错误
  • 解决error LNK2005 void __cdecl operator delete(void
  • LNK2005错误的原因与解决

    千次阅读 2021-04-29 13:05:34
    LNK2005错误的原因与解决 编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况: 1....

    LNK2005错误的原因与解决

     

    编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 

    造成LNK2005错误主要有以下几种情况: 
    1.重复定义全局变量。可能存在两种情况: 
    A、对于一些初学编程的程序员,有时候会以为 需要 使 用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定义如下:int g_Test;那么在使用的CPP文件中就应该使用:extern int g_Test即可,如果还是使用int g_Test,那么就会产生LNK2005错误,一般错误错误信息类似:AAA.obj error LNK2005 int book c?book@@3HA already defined in BBB.obj。切记的就是不能给变量赋值否则还是会有LNK2005错误。 
    这里需要的是“声明”,不是“定义”! 根据 C++标准的规定,一个变量是声明,必须同时满足两个条件,否则就是定义: 
    (1)声明必须使用extern关键字;(2)不能给变量赋初值 
    所以, 下面 的是声明: 
    extern int a; 
    下面的是定义 
    int a; int a = 0; extern int a =0; 
    B、对于那么编程不是那么严谨的 程序 员,总是在需要使用变量的文件中随意定义一个全局变量,并且对于变量名也不予考虑,这也往往容易造成变量名重复,而造成LNK2005错误。 

    2.头文件的包含重复。往往需要包含的头文件中含有变量、函数、类的定义,在其它使用的地方又不得不多次包含之,如果头文件中没有相关的宏等防止重复链接 的措施,那么就会产生LNK2005错误。解决办法是在需要包含的头文件中做类似的处理:#ifndef MY_H_FILE //如果没有定义这个宏 
    #define MY_H_FILE //定义这个宏 
    ……. //头文件主体内容 
    ……. 
    #endif 
    上面是使用宏来做的,也可以使用预编译来做,在头文件中加入: 
    #pragma once 
    //头文件主体 
    3. 使用第三方的库造成的。这种情况主要是C运行期函数库和MFC的库冲突造成的。具体的办法就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C 函数库,可能会引起这个错误。微软和C有两种C运行期函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是支持多线程的: msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误,一般情况下它需要MFC的库先于C运行期函数库被链接,因此 建议 使用支持多线程的msvcrt.lib。所以在使用第三方的库之前首先要知道它链接的是什么库,否则就可能造成LNK2005错误。如果不得不使用第三方的库,可以尝试按下面所说的方法修改,但不能保证一定能解决问题,前两种方法是微软提供的: 
    A、选择VC菜单Project->Settings->Link->Catagory选择Input,再在Ignore libraries 的Edit栏中填入你需要忽略的库,如:Nafxcwd.lib;Libcmtd.lib。然后在Object/library Modules的Edit栏中填入正确的库的顺序,这里需要你能确定什么是正确的顺序,呵呵,God bless you! 
    B、选择VC菜单Project->Settings->Link页,然后在Project Options的Edit栏中输入/verbose:lib,这样就可以在编译链接程序过程中在输出窗口看到链接的顺序了。 
    C、选择VC菜单Project->Settings->C/C++页,Catagory选择Code Generation后再在User Runtime libraray中选择MultiThread DLL等其他库,逐一尝试。 
    关于编译器的相关处理过程,参考: 
    http://www.donews.net/xzwenlan/archive/2004/12/23/211668.aspx 

    这就是我所遇到过的LNK2005错误的几种情况,肯定还有其他的情况也可能造成这种错误,所以我不 希望 你在看完这篇文章以后,再遇到LNK2005错误时候,不动脑筋的想对号入座的排除错误。编程的过程就是一个思考的过程,所以还是多多开动你的头脑,那样收获会更多!    


    方案二、 

    LNK2005...already defined...ERROR

    链接时出错提示:

    LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(fflush.obj) : error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(setlocal.obj) : error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(realloc.obj) : error LNK2005: _realloc already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)
    LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
    LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
    LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
    LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(dosmap.obj) : error LNK2005: __errno already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
    LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(isctype.obj) : error LNK2005: __isctype already defined in MSVCRTD.lib(MSVCR80D.dll)
    LIBCMT.lib(tolower.obj) : error LNK2005: _tolower already defined in MSVCRTD.lib(MSVCR80D.dll)

    解决方案:
    Project Properties, Linker, Input, 右边有个Ignore Specific Library,输入"MSVCRTD.lib",确定即可。

     


    方案三、 
    error LNK2005: _DllMain@12 already defined in AUDIO.obj 处理方法 
    VC++6.0中编译链接过程出错: 
    mfcs42d.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in AUDIO.obj


    症状
    当 C 运行时 (CRT) 库和 Microsoft 基础类 (MFC) 库的链接顺序有误时,可能会出现以下 LNK2005 错误之一:
    nafxcwd.lib(afxmem.obj) :error LNK2005:
    "void * __cdecl operator new(unsigned int)"(??2@YAPAXI@Z) already
    defined in LIBCMTD.lib(new.obj) 
    nafxcwd.lib(afxmem.obj) :error LNK2005:
    "void __cdecl operator delete(void *)"(??3@YAXPAX@Z) already defined
    in LIBCMTD.lib(dbgnew.obj) 
    nafxcwd.lib(afxmem.obj) :error LNK2005:
    "void * __cdecl operator new(unsigned int,int,char const *,int)"
    (??2@YAPAXIHPBDH@Z) already defined in LIBCMTD.lib(dbgnew.obj) 
    mfcs40d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
    MSVCRTD.LIB (dllmain.obj) 
    mfcs42d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
    msvcrtd.lib(dllmain.obj)


    原因
    CRT 库对 new、delete 和 DllMain 函数使用弱外部链接。MFC 库也包含 new、delete 和 DllMain 函数。这些函数要求先链接 MFC 库,然后再链接 CRT 库。


    解决方案一:强制链接器按照正确的顺序链接库
    1. 在“项目”菜单上,单击“设置”。 
    2. 在“项目设置”对话框的“以下项目的设置”视图中,单击以选中出现链接错误的项目配置。 
    3. 在“链接”选项卡上,单击以选中“类别”组合框中的“输入”。 
    4. 在“忽略库”框中,插入库名(例如,Nafxcwd.lib;Libcmtd.lib)。

    注意:等效的链接器命令行是:/NOD:<library name>。 
    5. 在“对象/库模块”框中,插入库名。必须确保这些库按顺序列出,而且是行中的前两个库(例如,Nafxcwd.lib 和 Libcmtd.lib)。 
    要在 Visual C++ .NET 中设置该选项,请阅读“设置 Visual C++ 项目属性”联机帮助主题。

    解决方案二:找到并纠正出现问题的模块
    要查看当前的库链接顺序,请按照下列步骤操作: 1. 在“项目”菜单上,单击“设置”。 
    2. 在“项目设置”对话框的“以下项目的设置”视图中,单击以选中出现链接错误的项目配置。 
    3. 在“链接”选项卡上的“项目选项”框中键入 /verbose:lib。 
    4. 重新生成项目。在链接过程中,这些库将在输出窗口中列出。


    状态
    这种现象是设计导致的。


    更多信息
    使用 MFC 库时,务必先链接它们,然后再链接 CRT 库。这可以通过确保项目中的每个文件都首先包 含 Msdev\Mfc\Include\ Afx.h 来完成。直接包含 (#include <Afx.h>) 或间接包含 (#include < Stdafx.h>) 都可以。Afx.h 包含文件会通过使用 #pragma comment (lib,"<libname> ") 指令来强制采用库的正确顺序。

    如果源文件的扩展名为 .c,或者该文件的扩展名为 .cpp 但不使用 MFC,则可以创建一个较小的头文件 (Forcelib.h) 并将其放在模块的顶端。这个新的头文件可确保按照正确的顺序搜索库。

    Visual C++ 不包含该头文件。要创建此文件,请按照下列步骤操作: 1. 打开 Msdev\Mfc\Include\Afx.h。 
    2. 选定 #ifndef _AFX_NOFORCE_LIBS 和 #endif //!_AFX_NOFORCE_LIBS 之间的行。 
    3. 将选定部分复制到 Windows 剪贴板。 
    4. 创建一个新文本文件。 
    5. 将剪贴板的内容粘贴到这个新文件中。  
    6. 将该文件另存为 Msdev\Mfc\Include\Forcelib.h。


    在 Visual C++ .NET 中重现问题的步骤
    1. 启动 Microsoft Visual Studio .NET。 
    2. 在“文件”菜单上,指向“新建”,然后单击“项目”。 
    3. 单击“项目类型”下的“Visual C++ 项目”,然后单击“模板”下的“MFC 应用程序”。 
    4. 在“名称”文本框中,键入 Q148652。 
    5. 在“位置”文本框中,键入 C:\Test,然后单击“确定”。 
    6. 在“MFC 应用程序向导”对话框中,单击“应用程序类型”。 
    7. 单击“应用程序类型”下的“基于对话框”,然后单击“MFC 的使用”下的“在静态库中使用 MFC”。 
    8. 单击“完成”。 
    9. 在“解决方案资源管理器”中,选择“源文件”下的全部三个 .cpp 文件。 
    10. 右键单击三个选定的文件,然后单击“删除”。 
    11. 右键单击“源文件”,指向“添加”,然后单击“添加新项”。 
    12. 单击“模板”下的“C++ 文件”。在“名称”文本框中,键入 Aa。单击“打开”。 
    13. 将以下代码粘贴到 Aa.cpp 中:int test(){new int; return 1;}

    14. 右键单击“源文件”,指向“添加”,然后单击“添加现有项”。  
    15. 选择以下文件: &#8226; Q148652.cpp 
    &#8226; Q148652Dlg.cpp 
    &#8226; stdafx.cpp 

    16. 单击“打开”。 
    17. 您在第 15 步中选择的文件将出现在“源文件”下。 
    18. 选择“源文件”下的全部四个 .cpp 文件。 
    19. 右键单击选定的四个 .cpp 文件,然后单击“属性”。 
    20. 展开“配置属性”,然后展开“C/C++”。 
    21. 单击“预编译头”。 
    22. 将“创建/使用预编译头”属性设置为“不使用预编译头”。单击“确定”。 
    23. 在“生成”菜单上,单击“重新生成解决方案”。


    本人Aladdin已采用的方案: 
    方案三中的解决方案一:强制链接器按照正确的顺序链接库 
    1. 在“项目”菜单上,单击“设置”。 
    2. 在“项目设置”对话框的“以下项目的设置”视图中,单击以选中出现链接错误的项目配置。 
    3. 在“链接”选项卡上,单击以选中“类别”组合框中的“输入”。 
    4. 在“忽略库”框中,插入库名(例如,Nafxcwd.lib;Libcmtd.lib)。 注意:等效的链接器命令行是:/NOD:<library name>。 
    5. 在“对象/库模块”框中,插入库名。必须确保这些库按顺序列出,而且是行中的前两个库(例如,Nafxcwd.lib 和 Libcmtd.lib)。
    展开全文
  • 关于ERROR LNK 2005错误

    2021-05-21 15:44:11
    D、error LNK2005: _DllMain@12 already defined in XXX.obj 处理方当C运行时(CRT)库和Microsoft基础类(MFC)库的链接顺序有误时,可能会出现以下 LNK2005错误之一:mfcs40d.lib(dllmodul.obj):error LNK2005:_...

    相信很多人对这个错误是一点也不陌生,甚至有些害怕,我也一样。其实自己遇到过这样的问题,也每次都解决了这样的问题,但关键是自己没总结,所以总是再遇到再改,很烦人,查资料也麻烦。现在有时间了总结下。

    遇到问题我最喜欢F1,所以还是先看MSDN是怎么说的:

    To fix by checking the following possible causes

    1.Mixing static and dynamic libraries when also using /clr.

    2.The symbol is a packaged function (created by compiling with /Gy) and was included in more than one file but was changed between compilations. Recompile all files that includesymbol.

    3.The symbol is defined differently in two member objects in different libraries, and both member objects were used.

    4.An absolute is defined twice, with a different value in each definition.

    5.A header file declared and defined a variable. Possible solutions include:

    ·Declare the variable in .h:extern BOOL MyBool;and then assign to it in a .c or .cpp file:BOOL MyBool = FALSE;.

    ·Declare the variable static.

    ·Declare the variable selectany.

    6.If you use uuid.lib in combination with other .lib files that define GUIDs (for example, oledb.lib and adsiid.lib).

    7.To fix, add /FORCE:MULTIPLE to the linker command line options, and make sure that uuid.lib is the first library referenced.

    其中1,我一直说学习托管编程,但只是打雷。其实使用托管就是不使用C++的编译器,而是编译成

    中间语言,这样可以充分利用.Net的庞大的类库,不熟悉不说,以后学习了可以补上。

    其实遇到这个错误并不可怕,只要我们找出原因,知道为什么会引起这些错误后,就不难解决。根据自己平时的心得和MSDN的解释,主要有下面这些情况,可能引起lnk 2005错误。

    A、全局变量的重复定义,在实际的编程中我们应该尽量不使用全局变量。她会产生如下的错误:

    AAA.obj error LNK2005 int book c?book@@3HA already defined in BBB.obj

    其实这个错误很好找,book@@3HA这个就是你重复定义了的变量。至于是怎么重复定义,情况

    很多。关键是要理解清楚变量的声明和定义,以及extern关键字的使用,这些是基础知识。

    B、文件的重复包含,因为头文件中会有很多的变量,函数声明,所以要是被重复无次序包含的话,就有可能产生lnk 2005错误。

    解决方法是使用#ifndef #define #endif宏来预防头文件被多次包含时重复编译。或者使用#pragma once做预编译。

    C、库版本包含错误,这个里面分两种情况说下。

    1、第三方库引起错误,这个在做directshow程序的时候记忆尤为深刻。现在自己把那个库分别编译成了strmbasd.lib、strmbasd_Unicode.lib、strmbase.lib、strmbase_Unicode.lib,这样根据不同的版本和字符编码链接不同的库,就不会出现错误。这样问题没什么好多,自己注意就是。

    2、关于编译器编译选项设置引起的lnk 2005错误。如:

    1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __vsnwprintf_s already defined in LIBCMTD.lib(vswprnc.obj)

    1>MSVCRTD.lib(MSVCR80D.dll) : error LNK2005: __vsnprintf_s already defined in LIBCMTD.lib(vsnprnc.obj)

    1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)

    1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)

    我们应该搞清楚这些编译选项的区别和作用,它对我们编译程序有很好的作用。不然我很容易因

    为编译选项选错而链接了错误的版本。关于编译选项所对应的链接库,可以参考msdn以下连接:

    C Run-Time Libraries (CRT)C run-time libraryAssociated DLLCharacteristicsOptionPreprocessor directives

    libcmt.libNone,static link.Multithreaded, static link_MT

    msvcrt.libmsvcr90.dllMultithreaded, dynamic link (import library for MSVCR90.DLL). Be aware that if you use the Standard C++ Library, your program will need MSVCP90.DLL to run._MT, _DLL

    libcmtd.libNone,static linkMultithreaded, static link (debug)/MTd_DEBUG,_MT

    msvcrtd.libmsvcr90d.dllMultithreaded, dynamic link (import library for MSVCR90D.DLL) (debug)./MDd_DEBUG,_MT, _DLL

    msvcmrt.libmsvcm90.dllC Runtime import library. Used for mixed managed/native code./clr

    msvcurt.libmsvcm90.dllCRuntime importlibrary compiled as      100% pure MSIL code. All code complies with the ECMA URT spec for MSIL./clr:pure

    Standard C++ Library

    Standard C++ LibraryCharacteristicsOptionPreprocessor directives

    LIBCPMT.LIBMultithreaded, static link/MT_MT

    MSVCPRT.LIBMultithreaded, dynamic link (import library for MSVCP90.dll)/MD_MT, _DLL

    LIBCPMTD.LIBMultithreaded, static link/MTd_DEBUG, _MT

    MSVCPRTD.LIBMultithreaded, dynamic link(importlibrary for MSVCP90D.DLL)/MDd_DEBUG, _MT, _DLL

    根据给出的信息,以及上面两个表的分析。

    我们配置的是/MTd。也即是多线程的DLL的Debug版本,当设置编译器选项为/MTd的时候,编译器

    会将库名LIBCMTD.lib放入.obj文件中,以便链接器使用LIBCMTD.lib解析外部符号。所以要将MSVCRTD.lib这个库去掉,方法如下图:

    capture_propertry.jpg

    注意:这个种情况问题的解决是需要我们根据自己的配置来分析,要那些库,不要那些库,不要硬套。

    D、error LNK2005: _DllMain@12 already defined in XXX.obj 处理方当C运行时(CRT)库和Microsoft基础类(MFC)库的链接顺序有误时,可能会出现以下

    LNK2005错误之一:mfcs40d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in

    MSVCRTD.LIB (dllmain.obj)

    mfcs42d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in

    msvcrtd.lib(dllmain.obj)

    CRT库对new、delete和DllMain函数使用弱外部链接。MFC库也包含new、delete和

    DllMain函数。这些函数要求先链接MFC库,然后再链接CRT库。所以按顺序修改即可

    展开全文
  • error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)的解决方案
  • 在头文件中对静态变量声明在单个cpp文件中使用是没有问题的,但是对于多个cpp文件就会报错LNK2005.原因其实就是在头文件中被定义了。 因为多创建了个cpp,一开始以为是没有#ifndef,但是它和#pragma once在作用上是...

     

    LNK后总会跟着LNK1169;

    在头文件中对静态变量声明在单个cpp文件中使用是没有问题的,但是对于多个cpp文件就会报错LNK2005.原因其实就是在头文件中被定义了。

    因为多创建了个cpp,一开始以为是没有#ifndef,但是它和#pragma once在作用上是一样的,只是针对同一份文件不被包含两次。

    解决办法就是把变量定义在cpp中,声明全局变量不能像上面的“int aa”,它也相当于被定义,需要加上extern;

    所以头文件用来声明,cpp用来定义可以避免这样的问题

    展开全文
  • errorLNK2005问题,小弟实在无能为力!!!0代码部分:// function.h: interface for the function class.//接口函数类//////////////////////////////////////////////////////////////////////#ifndef AFX_FUNCTION_H_...
  • C ++中的即时对象初始化失败,出现LNK2005错误(Instant object initialization in C++ fails with LNK2005 error)这些是我收到的错误:LNK2005 "class Sally TestObject" (?TestObject@@3VSally@@A) already defined...
  • 错误 LNK2005 _main 已经在 test0208.obj 中定义 错误 LNK1169 找到一个或多个多重定义的符号 出现这类错误的原因基本上都是在同一个文件下的.cpp文件中有main函数没有注释(违背了一个项目中只能有一个主函数...
  • --------------------Configuration: 34214233 - Win32 Debug--------------------Linking...zy.obj : error LNK2005: _input_message already defined in input.objzy.obj : error LNK2005: _save_message already ...
  • LNK2005

    2016-05-03 20:00:27
    VC++的链接错误LNK2005 编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误。弄清楚它形成的原因,就可以轻松解决它了。 造成LNK2005错误主要有以下几种情况: 1. 重复...
  • 同时出现LNK2005 和LNK1169 error 的解决办法项目场景:问题描述:原因分析:cpp引用cpp导致报错解决方案:问题总结 项目场景: Visual Studio 的C++ 项目中,在main.cpp中引入LinkStack.cpp时会出现以下报错: 问题...
  • 问题: 情况是这样的一个全局变量在一个头文件中定义, ...编译时报错:main.obj : error LNK2005: "class " 。。。。。已经在*.obj中定义 解决办法: 首先保证无重名变量的重定义出现,然后将定义
  • : error LNK2005: __exit already defined in libcmt.lib(crt0dat.obj) LIBC.lib(crt0dat.obj) : error LNK2005: __cexit already defined in libcmt.lib(crt0dat.obj) LIBC.lib(crt0dat.obj) : error LNK2005: __c_...
  • LNK2005:*** 已经在 *** 中定义 错误如下图所示: 此问题和LNK2019中出现问题的一种情况是相对的: 在LNK2019中出现的一个问题是,在类中使用了类模板,则在使用这个类时,需要引用这个类的.cpp文件,在引用.h文件...
  • VS编译期间遇到各式各样的链接LNK错误,作一汇总: LNK1120: 1 个无法解析的外部命令 这个问题的原因是有头文件,但是找不到实现。 有两个原因:1.只包含了头文件,只有这个函数的声明,没有包含这个函数的实现...
  • LNK2005 解决方法以及发生原因

    千次阅读 2019-05-28 16:42:55
    LNK2005 解决方法以及发生原因解决方法发生原因 解决方法 我是在VS2017上出现这个问题的,解决方法很粗暴,右键项目属性—>链接器—>命令行,底下的“其他选项”填入:/FORCE:MULTIPLE 。 发生原因 原因是因为...
  • 错误 LNK2005 "public: void __cdecl COriginalDerived::test(void)" (?test@COriginalDerived@@QEAAXXZ) 已经在 Hpp Style.obj 中定义 Hpp Style C:\Users\HP\Desktop\Study Day By Day\Hpp Style\OriginalDeriv...
  • error LNK2005 原理及解决办法

    千次阅读 2019-08-07 11:12:13
    error LNK2005,解决办法 错误信息: testLib.lib : error LNK2005: 已经在 msvcprtd.lib(MSVCP90D.dll) 中定义 libcpmtd.lib: error LNK2005: 已经在 msvcprtd.lib(MSVCP90D.dll) 中定义 发生情况: test.exe调用...
  • 已启动生成… 1>------ 已启动生成: 项目: Bosch_EDC7, 配置: Debug Win32 ------ 1>edc7.lib(Bosch_EDC7.obj) : ...LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范) 1>Bosch_EDC7.obj : wa
  • 今天在头文件“a.h”中定义了结构体变量和函数定义,在今天生成工程的时候,出现LNK2005错误。 经过定义问题,发现是a.h头文件在多个cpp中进行了声明,这样导致了a.h头文件中定义的函数进行了重复定义,解决方法是...
  • 错误: error LNK2005: _DllMain已经在dllmain.obj 中定义 解决: 打开项目属性对话框, C/C++ ->预处理器->预处理器定义中,去掉 _USRDLL项
  • boost LNK2005 重定义错误

    千次阅读 2019-05-14 16:19:34
    开发的库使用了boost库...libboost_system-vc141-mt-gd-x64-1_68.lib(error_code.obj) : error LNK2005: "class boost::system::error_category const & __cdecl boost::system::detail::generic_category_ncx(v...
  • MSVCRT.lib(MSVCR100.dll) : error LNK2005: "public: virtual char const * __thiscall std::exception::what(void)const " (?what@exception@std@@UBEPBDXZ) already defined in libcmt.lib(stdexcpt.obj) 1&...
  • 报错截图: 原因是:一个项目里面只能有一个主程序,任意去掉一个.90文件就好了 ![在这里插入图片描述]... 【新手求助】error:LNK2005:_MAIN_already defined in xxxx ...
  • 问题描述: 在创建Win32动态库时,使用了MFC库。 原因分析: MFC库中存在DllMain,与现有的DllMain重复 解决方案: ...1.删除现有的DllMain函数 ...2.在工程设置里面,把WIN32,NDEBUG,_WINDOWS,_MBCS,_USRDLL,MSGBOX_...
  • 那么在使用的CPP文件中就应该使用: extern int g_Test 即可,如果还是使用int g_Test,那么就会产生LNK2005错误,一般错误错误信息类似: *.obj error LNK2005 int book c? already defined in *.obj ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,642
精华内容 4,656
关键字:

LNK2005