问题标签 [lnk2005]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
5539 浏览

c++ - Visual C++ LNK2005、LNK2019 中的链接器错误 - 不知道为什么

我正在尝试从 nVidia 9.5 SDK 构建代码,但出现以下链接器错误:

我不知道为什么我会遇到这些恐惧,因为我 99% 确定我已经正确设置了我的目录。

例如,它找不到的函数之一是 TextureFactory::CreateTextureFromFile 但我已经将声明和定义该函数的目录添加到 Visual C++ 设置中的 include/source 目录中。

文件顶部如下所示:

更重要的是,如果我在出现这些错误的文件顶部说#include“TextureFactory.h”和#include“texturefactory.cpp”,那么就没有歧义的余地,函数已定义并基本上复制+粘贴到生成链接器错误的同一源文件中,但我仍然收到链接器错误。

我忽略了什么吗?

0 投票
18 回答
79784 浏览

c++ - 错误 LNK2005:在 LIBCMTD.lib(new.obj) 中已经定义了新的和删除的

我有一个包含两个项目的 Visual Studio 2005 解决方案。一个是静态库,另一个是用于测试静态库中功能的可执行文件。静态库使用 MFC。构建解决方案时出现以下错误。

我不知道如何克服这一点。有人可以解释为什么会发生此错误。任何概述 .lib 文件链接的解释都将受到高度赞赏。

0 投票
1 回答
25180 浏览

c - 使用 Microsoft Visual Studio '08 编译 libpng 时如何避免“错误 LNK2005:”(已定义 stdlib 函数)?

(为什么我要这样做:我在 Windows 上为 libpng 使用预构建的二进制文件时运气不佳(尽管经过了许多小时的反复试验),因此现在我正在尝试自己编译它。我发现这个有用的博客与此相关的帖子,附带 Microsoft Visual Studio 2008 项目文件,但遗憾的是仍然无法使用它。)

它在链接到此处找到的 zlib 二进制文件时成功编译,但在尝试将其链接到测试文件时,我收到以下信息:

任何人都可以关心如何解决这些错误吗?

0 投票
2 回答
1140 浏览

c++ - 内联非成员函数内的本地类使用 MSVC2005 生成 LNK2005

显然,MSVC2005 未能内联导致 LNK2005 的本地类的成员函数。

编译以下内容时遇到此 LNK2005 错误:

common.h内容:

foo.cpp内容:

bar.cpp内容:

LNK2005.cpp内容:

错误信息是:

关于本地课程,ISO IEC 14882-2003 说:

9.8 本地类声明

类可以在函数定义中定义;这样的类称为本地类。本地类的名​​称在其封闭范围内是本地的。本地类在封闭作用域的范围内,并且对函数外部的名称具有与封闭函数相同的访问权限。本地类中的声明只能使用封闭范围内的类型名称、静态变量、外部变量和函数以及枚举数。

封闭函数对本地类的成员没有特殊的访问权限;它遵守通常的访问规则(第 11 条)。本地类的成员函数应在其类定义中定义,如果它们被定义的话。

我错过了什么?

对我来说,它看起来像是一个编译器错误。GCC 和 MSVC2008 编译它就好了。但是,我想知道他们是否真的会内联调用,或者只是在链接阶段丢弃两个符号之一。作为一个有趣的注释,您可以注意到甚至没有调用这个本地类成员函数。

我想知道 MSVC2005 是否有解决方法。我试图在 MSDN 中搜索这个典型问题,但没有取得多大成功:我什至无法找到编译器的已知错误列表。


附件:LNK2005.zip

0 投票
1 回答
410 浏览

c++ - 尝试将 GLUI 库添加到项目时,Release 中的链接器问题

我尝试将 GLUI 库添加到我的项目中。在调试模式下编译运行良好。但是如果我在 Release 中编译,它会给我一堆 LNK2005 错误,比如:

好的 - 我之前已经遇到过一些类似的链接器问题,因为我在我的应用程序中同时使用了 CRT 和 MFC,但我可以使用本指南解决这个问题:http: //support.microsoft.com/default.aspx ?scid=http:// support.microsoft.com:80/support/kb/articles/q148/6/52.asp&NoWebContent=1

因此,在链接器->输入面板的项目设置中,我有

所以 - 这曾经工作正常。但是现在我将glui32.lib(它实际上是使用#pragma 语句加载到glui.h 头文件中)到我的项目中,我得到了那些链接器错误。

关于我能做什么的任何建议?

谢谢!

0 投票
2 回答
10053 浏览

c++ - 如何忽略 LNK2005 和 LNK1169?

所以我有一个使用外部库的 Visual Studio 2010 项目,为了在没有 LNK2005 的情况下编译它,我不得不在链接器设置中处理库的顺序。

我让它在发布模式下编译得很好,但无论出于何种原因,我都无法让它在调试中没有 LNK 错误的情况下编译。

有没有办法通常忽略 LNK2005 并告诉链接器简单地使用他首先遇到的任何东西?

谢谢!

//编辑:这里是特定问题的一些错误输出。但是我已经尝试以不同的方式解决这个问题,每种解决方案都会给我带来不同的链接器问题。因此我正在寻找忽略 LNK2005 的通用解决方案

Error 7 error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in Libcmtd.lib(typinfo.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 8 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) ...\msvcprtd.lib(MSVCP100D.dll)

Error 9 error LNK2005: _exit already defined in Libcmtd.lib(crt0dat.obj) ...\msvcprtd.lib(MSVCP100D.dll)

Error 10 error LNK2005: __invalid_parameter already defined in Libcmtd.lib(invarg.obj) ...\msvcprtd.lib(MSVCP100D.dll)

...

Error 37 error LNK1169: one or more multiply defined symbols found

0 投票
3 回答
4684 浏览

c++ - MSVC 2010 链接器错误 2005 与静态库中的 std::cout

我发现了其他人遇到这个问题的例子,但他们的解决方案没有运气。我正在尝试在一个静态库中使用 std::cout,该库也使用 boost 线程和绑定。当我不使用它并且std::cout它编译并与主程序链接很好但是当我这样做并且我编译库时我没有问题但是当我编译和链接使用静态库的主程序时我得到了很多类似的东西:

ETC...

我尝试进入我的链接器设置并阻止它使用错误输出中列出的冲突库,但我无法正确处理。如果我告诉它停止使用一个库,它可能会解决问题但给我一些丢失的外部符号,然后我切换它有问题的库,但我仍然得到一些“已经定义”的库。我可以做些什么来解决这个问题的任何线索?我是否应该只创建另一个名为“log”的类或其他东西,然后从主 .exe 访问它(它将使用字符串库,这可能会再次导致问题,但我还没有尝试过)?感谢您的任何帮助。

0 投票
1 回答
13427 浏览

visual-studio-2005 - Visual Studio 2005 中的 LNK 2005 错误

我在 Windows XP 上使用 Visual Studio 2005。我正在尝试使用“谷歌测试”框架。但是由于链接器错误,我无法只进行一项测试。

我在调试模式下使用 /MDd 选项构建了 Google 测试源文件,而不是创建了新项目。然后将此链接中编写的步骤写入项目属性文件。

比我尝试使用 /MDd 选项在调试模式下构建并发生以下错误。你能帮忙吗?谢谢你。

当我评论 gtest 文件时,错误如下:

0 投票
3 回答
15525 浏览

c++ - Visual Studio 2010 中的 Visual C++ 中的 LNK 2005

我正在尝试在 MS VS 2010 中编译使用 Visual C++ 2005 和 MFC 编写的 C++ 程序。遗憾的是,我在编译过程中遇到以下错误:

CMemDCImpl 有一个头文件,其中包含 CMemDCImpl 类的所有成员的定义,以及 *.cpp 文件及其实现。请帮我解决这个错误。

0 投票
2 回答
2040 浏览

c++ - 具有非模板基的模板类给了我一个 LNK2005 错误

我有一个继承自非模板父类的模板类Child。当我在多个 .cpp 文件中包含Child的标头时,我收到 LNK2005 错误。发生这种情况是因为Parent在多个编译单元中定义。当这些单元链接在一起时,它们会导致 LNK2005 错误。

如果您想知道,Parent的目的是为Child的所有Child实例提供一个静态变量,而不仅仅是为每个Child< ''type'' >提供一个。

我的问题是,如何创建一个具有唯一(跨所有实例)静态变量并且可以包含在多个 .cpp 文件中的模板类?

这是导致此 LNK2005 错误的玩具示例:

主文件

苹果.h

苹果.cpp

香蕉.h

香蕉.cpp

孩子.h

错误 LNK2005:“受保护:静态 int Parent::id”(?id@Parent@@1HA) 已在 Apple.obj 中定义