问题标签 [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 回答
2465 浏览

c++ - 每个 .cpp 创建两个 LNK2005 错误

好的,所以我已经有几个月没有使用 C++了,而我的一个问题一直是使用多个标头。目前我的问题是我所有的类标题都链接到 .cpp 文件使用的主标题。我正在使用 ifndef 来确保没有重复,但我认为问题是由于我的构建输出正在编译一组文件时

所有的 cpp 文件只包括我的“header.h”,它本身包括所有其他头文件。

页眉.h:

我一直在努力解决这个问题一个多小时,任何见解都将不胜感激

编辑:

重载<<

地址是一个结构

0 投票
1 回答
121 浏览

c++ - 模板化类的链接器错误

尝试编译模板类时出现链接器错误。我对 C++ 模板化编程和编译器的工作 (MSBuild/VS2012) 不太感兴趣,并且很难确定我做错了什么。我正在使用 /CLR 进行编译,当我尝试编译源文件时出现一系列链接器错误 (LNK2005),大致为:

ISaveStrategy.h:

SaveToXmlStrategy.h:

SaveToXmlStrategy.cpp:

实施.cpp:

0 投票
0 回答
80 浏览

c++ - Visual Studio 2012 链接问题

Visual Studio 最近似乎很疯狂。我正在开发一个简单的 c++ 项目,其中包括一个带有定义的标头 + 带有声明的 cpp 文件。而已。简单的包含保护,.h 包含在两个源文件中。现在我发现自己对链接问题感到头疼。有时只是编译并说一切正常,有时继续抛出 LNK2019 - 尽管没有对项目结构进行任何更改。突然,它突然决定编译,经过一些更改后又回到了初始状态。我已经在这个主题中描述了这个问题,但问题已经解决了。我还必须注意,我已将文件结构简化到最低限度。尝试过清理、重建,几乎是 VS 中的任何工具。有没有其他人遇到过这样的问题?

0 投票
1 回答
173 浏览

c++ - Visual Studio 认为函数已经定义?

我正在处理的一个项目有两个文件,一个是我自己的作品,一个是由同学编写的,用作一种 API。我的问题是,资源文件中定义的函数导致 VS2012 中的链接器错误。

我收到错误LNK2005,微软将其定义为:

已在对象中定义的符号

以装饰形式显示的给定符号是多重定义的。


资源文件中定义的三个函数ArgvFunctions.cpp是:

#includes我的实现文件中:


如果它有帮助:在我遇到这个问题之前,我不得不抑制由此引发的错误ArgvFunctions.cpp,因为其中的函数使用了 Microsoft 的版本,strtok()并且strncpy()由于安全问题而被微软弃用(我确保没有任何东西传递给据我所知,这些功能可能会使它们绊倒,所以这些问题无论如何都不是问题;而且,我没有时间或知识来替换strtok()等等strtok_s())。


编辑:

哎呀,原来我对C++一无所知。谢谢大家。

0 投票
2 回答
10025 浏览

c++ - 包括 Boost 文件系统标头

我有一个大项目。

N.cpp我需要使用boost::filesystem::exists(path)来检查路径是否有效。

为此,我包括<boost/filesystem.hpp>

我收到以下错误:

如果我不包含头文件,我会得到:

什么是正确的使用方法boost::filesystem::exists以便整个编译?

N.cpp

0 投票
4 回答
610 浏览

c++ - 在 C++ 中包含文件时重新定义函数(错误 LNK2005)

我是 C++ 新手,我有一个基本的疑问。
我正在创建一个法语动词共轭应用程序。
我有两个文件,一个 Conjugator.cpp 文件和一个 ErVerbs.cpp 文件。我想将大部分函数保留在 ErVerbs 源文件中,并使用共轭文件来使用这些函数。

以下是一些代码片段:

共轭器.cpp

ErVerbs.cpp

同样,我还有其他三个具有类似功能的此类 .cpp 源文件。

当我构建程序时,我收到一个错误,我正在使用的每个方法都已定义。

如果有人能告诉我如何将函数保存在单独的源文件中并将它们#include 到一个源文件中并在没有重新定义错误的情况下使用它们的函数,我将不胜感激。

0 投票
1 回答
721 浏览

c++ - 未能构建多小部件 QtDesigner 插件

我正在尝试创建一个包含两个 QtDesigner 插件的 DLL“CustomPlugins”。通过复制 WorldClockPlugin 示例,我可以让每个插件单独工作。但是,当我尝试将它们都包含在单个 DLL 中时,会出现以下构建错误:

在我看来,通过使我的插件包装器小部件都继承 QDesignerCustomWidgetInterface 导致 _qt_plugin_instance 函数的多重定义。我查看了 moc 文件和 customwidget 头文件(包含在 QDesignerCustomWidgetInterface 中),但找不到对此函数的任何引用。

QDesignerExportWidget 包含在两个插件头文件中,QDESIGNER_WIDGET_EXPORT 包含在两个小部件声明中。

是否根本不可能将两个插件包装在同一个 DLL 中?还是我错过了什么?

谢谢你。

以下是代码。qdragabletoolboxplugin.* 文件(未显示)与 qledplugin* 文件几乎相同。此外,qdragabletoolbox(也未显示)的声明方式与 qled 相同,但显然做了一些非常不同的事情。为了节省空间,我放弃了这些文件,并用省略号替换了一些函数定义。

。轮廓:

qled.h:

qled.cpp

qledplugin.h

qledplugin.cpp

0 投票
2 回答
1226 浏览

c++ - SDL2,错误 LNK2005 对象已在 libcmt 中定义

所以这是一个常见错误,但所有帖子都说我需要更加注意我所包含的库版本。我正在使用 SDL2、OpenGL 和 SDL_Mixer...除了坚持使用 32 位库之外,我没有任何选择。

调试编译正常,但除非我将运行时库设置为 /MD,否则发布会给我 LNK2005 错误。我想避免这种额外的依赖。除非 Visual Studio 启动发布版本,否则生成的可执行文件会停止响应 SDL 初始化或某些 OpenGL 调用。所以我遇到了某种多线程问题,但我还没有接近理解它。一点帮助?

更新:/FORCE:MULTIPLE 允许使用 /MT 编译项目。但就像 /MD 一样,除非 Visual Studio 启动发布版本,否则生成的可执行文件会崩溃。这意味着什么?

UPDATE2:在 SDL 项目中使用 /MD。崩溃只是调试器没有捕获的内存错误。链接无关。

0 投票
1 回答
883 浏览

c - “已在目标文件中定义”和“找到一个或多个多重定义的符号”

通过MSDN的 RPC 教程,我刚刚创建了一个包含两个.c文件的项目,如下所示:

问题::错误LNK2005和致命错误LNK1169

编译器为什么以及在哪里看到多个符号定义或声明HelloProc(char*)

编辑::正如在这个SO_Question中得出的结论,包括.h文件显然是最好的解决方案。但这是否让我们无法实现可以将一个.c文件包含到另一个.c文件中的设计?

奇怪的行为::第一次编译运行良好,但解决方案的重建因上述错误而中断。.c您可以通过将文件名更改为to来检查多次首次编译,.cpp反之亦然。为什么它会表现出这种行为?(我不确定其他人是否也通过给定的示例经历过这种情况)

0 投票
1 回答
204 浏览

c++ - c++ 类循环引用?

我正在开发一个小型游戏引擎,但我遇到了一些问题。解释:我有两个课程, cEntity并且ObjectFactory

c实体

对象工厂

现在我正在向 in 构造函数添加新cEnity内容,ObjectFactorycEntity面临与循环引用相关的错误:使用ObjectFactor::addEntity()我需要定义ObjectFactory.hincEntity类,但它会创建循环引用。