问题标签 [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 投票
1 回答
832 浏览

c++ - 与枚举相关的 C++ LNK2005 错误

由于在头文件中使用了枚举,我收到了 LNK 错误 2005。我不确定它有什么问题。枚举通常包含在头文件中吗?

这是我的代码。我有 4 个文件:board.h、board.cpp、Solitaire.h、Solitaire.cpp。

板.h:

板子.cpp:

接龙.h

接龙.cpp

我得到的错误是

错误 LNK2005 "enum PieceType (* board_data)[6]" (?board_data@@3PAY05W4PieceType@@A) 已在 board.obj 中定义

谢谢!

0 投票
1 回答
648 浏览

c++ - C++ 中的错误 LNK2005 和 ifndef 不起作用

我对 Visual Studio 2012 和 2015 有疑问,因为它看起来比“ifndef”不起作用。我对“NAN”使用“ifndef”,对头文件使用“ifndef”,据说这两个错误(见图)。当我在其他文件的标题中添加链接“#include”Outil.h“”时,我看到了相同的错误消息。

我以前总是这样做,而且总是有效。我不明白为什么即使只有两个文件它现在也不起作用。

我也尝试更改第一个函数“realoc_ungraded”的名称,但它不起作用,我得到同样的错误。

错误信息

消息:

1)警告:C4005:'NAN':math.h 的宏重新定义

2) 错误:LNK2005: "struct tab_dynamo __cdecl realoc_ugraded(struct tab_dynamo,unsigned int)" (?realoc_ugraded@@YA?AUtab_dynamo@@U1@I@Z) 已在 main.obj Project1 中定义

3) 错误:LNK1169:找到一个或多个多重定义符号 Projet

有不同文件的代码:

文件 main.cpp

文件输出.h

文件 Outil.cpp:

0 投票
0 回答
104 浏览

c++ - 模板代码的 LNK2005 和 LNK1169 错误

请在将此问题标记为重复之前阅读我的具体问题,因为没有其他问题可以回答我的问题。

我收到以下链接错误:

我了解错误是什么,但我不知道如何解决它们。

我有一个 function.cpp、main.cpp 和 header_file.h:

函数.cpp:

主.cpp:

header_file.h:

0 投票
1 回答
28 浏览

c++ - 定义静态类字段时,多个已定义符号的链接器错误

我有一个类,我在其中定义了一个静态整数,我希望能跟踪该类有多少对象被实例化。

然后我定义以下构造函数:

那么我错过了什么?我想我正在做我教科书告诉我的一切。

我在编译时得到这个

我希望有人能指出我的错误,非常感谢。

编辑:@linuxuser27 帮我解决了我的问题,所以基本上我只是移动了

从类定义到类实现,如下所示:

mob.h:

暴民.cpp

构造函数保持不变。

0 投票
1 回答
89 浏览

c++ - C++ MSXML,LINK 错误“已在 obj 中定义”

我不明白我做错了什么

通用.h

通用.cpp

Flisr.cpp

错误是:

0 投票
1 回答
32 浏览

c++ - 在继承的类中使用相同的 .h 文件时出现 C++ 链接器错误

我有两个班级:ClassA 和 ClassB。ClassB 继承 ClassA。classa.cpp 和 classb.cpp 都包含一个 utility.h-header 文件,以便我可以使用该方法

来自两个 .cpp 文件中的实用程序.h。

像这样在 ClassA 中使用它时:

它工作正常。但是当我尝试像这样在 ClassB 中使用它时:

链接器给了我错误:

我似乎找不到原因。

先感谢您。

编辑:补充说 Utilities.h 只包含这个

0 投票
1 回答
836 浏览

c++ - 从模板继承的 MSVC DLL 导出类导致 LNK2005 已定义错误

我一直在跟踪一个大型项目中的错误 3 天,最后得到了一个最小的可重现示例。我想分享这个问题,并就 Visual Studio 的奇怪行为提出一些问题。

当您导出从​​实例化模板类继承的类时,例如

MSVC 还将Template<double>在 DLL 中导出实例化的模板类。

如果消费者"template.h"在他的代码中包含然后实例化a Template<double>,qnd同时,链接到上面的DLL,他会得到两个定义Template<double>,导致LNK2005LNK1169错误。此问题在Microsoft DLL 导出和 C++ 模板中进行了讨论。

这是此问题的最小可重现示例(完整代码在此处):

我在 VS2015 调试模式下编译代码,它给出了多重定义的错误

如果我进行以下更改之一,则不会出现错误:

  1. 更改为发布模式
  2. 删除AA_APIat(2)并将链接模式更改为 STATIC at(1)
  3. 评论(3)和取消评论(4)(5)
  4. 评论(6)和取消评论(7)(8)
  5. 通过 gcc 在 Linux 中编译
  6. 在 VS 中更改项目参数:添加/FORCE:MULTIPLE到项目 Main 的链接器

问题:

为什么更改 1、2、3、4 和 5 有效?我觉得 3 和 4 可以工作真是太奇怪了。

如何在 Visual Studio 中正确解决此问题?

0 投票
1 回答
2977 浏览

c++ - C++ LNK 2005 错误“已在 .obj 中定义

我收到了这个 LNK 2005 错误,即使我已经使用正确的头文件和 cpp 文件格式创建了游戏类,据我所知。

在谷歌搜索问题一段时间后似乎是这个错误的主要原因,谁能看到我搞砸了什么?

我的game.h文件如下:

我的 game.cpp 文件是:

我的主要内容现在只是创建对象的一个​​实例

主要的:

0 投票
0 回答
55 浏览

linker - 如何规避 LNK2005/LNK2006(重复符号)?

我有一种情况,我必须链接两个不幸地重复定义符号的目标文件(我没有源代码)。我想知道是否有合理的方法来规避这个问题?

另一个问题中,有人建议无论如何都要使用/FORCE来产生输出,但也有人提到使用/FORCE意味着人们几乎无法控制情况。不仅要使用哪些符号未定义,而且还意味着无意中重复的符号会静默通过(这很可能是一个错误)。

我想告诉链接器我知道foo在两者中都定义了它bar.objbaz.obj并且它应该忽略在baz.obj. 这样,如果我要qux在代码库的两个位置定义,或者即使我碰巧foo在其他一些目标文件中定义,它也应该诊断为错误。

0 投票
1 回答
184 浏览

c++ - 尽管在我的 .h 文件中使用了 `#ifndef #define #endif` 代码块,为什么我会收到如此多的 `LNK2005` 错误?

我有 21 个文件,如图所示:

在此处输入图像描述

以下 35 个函数在util.hinside a 的第 364-411 行中声明

代码块:

以下 30 个函数在util_block.h内部的 第 99-135 行中声明

代码块:

以下 35 个函数在util_convert.h内部的 第 106-149 行中声明

代码块:

该文件的内容PolSARproLib.h是:

该文件的内容PolSARproLib.c是:

我已将这 21 个文件放在一个名为的文件夹中,并按如下方式Static Project创建了PolSARproLib.lib文件,我的机器是 Win 10x64 的机器:(这里我上传了这个项目):

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

文件graphics.obj, matrix.obj, my_utils.obj, PolSARproLib.lib, PolSARproLib.obj, processing.obj, statistics.obj, sub_aperture.obj, util.obj, util_block.obj,util_convert.obj是在项目文件夹中创建的,Debug没有任何错误,但有一些警告,例如:

在此处输入图像描述

在此处输入图像描述

我创建了一个名为的文件夹Arii,并在子文件夹中放置了以下 22 个文件\Arii\lib

在此处输入图像描述

我也将文件arii_anned_3components_decomposition.c放在文件夹中Arii

在此处输入图像描述

现在我arii_anned_3components_decomposition在文件夹中创建项目Arii如下(这里我已经上传了项目)

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在以下 2 张图片中,您可以看到项目的配置。同样,我应该说我正在使用 Win 10x64 机器

在此处输入图像描述

在此处输入图像描述

将外部库添加到项目中,如下所示:

.h我输入放置 头文件的文件夹的路径

在此处输入图像描述

我输入.lib放置文件 的文件夹的路径

在此处输入图像描述

我已经输入了这些所需.lib文件的名称:

在此处输入图像描述

这是文件的开头(在 main 函数之前)arii_anned_3components_decomposition.c

现在我构建解决方案:

在此处输入图像描述

不幸的是,我得到了 104 个错误。其中 100 个是关于 , util.h,util_convert.h中函数的多重定义util_block.h(这些函数在问题的开头列出)

错误 1-100 类似:

在此处输入图像描述

这里我上传了error and warning file.txt

  • 我真的不明白为什么我会收到这些关于代码块#ifndef #define #endif已在代码中使用的错误?