问题标签 [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.
c++ - 每个 .cpp 创建两个 LNK2005 错误
好的,所以我已经有几个月没有使用 C++了,而我的一个问题一直是使用多个标头。目前我的问题是我所有的类标题都链接到 .cpp 文件使用的主标题。我正在使用 ifndef 来确保没有重复,但我认为问题是由于我的构建输出正在编译一组文件时
所有的 cpp 文件只包括我的“header.h”,它本身包括所有其他头文件。
页眉.h:
我一直在努力解决这个问题一个多小时,任何见解都将不胜感激
编辑:
重载<<
地址是一个结构
c++ - 模板化类的链接器错误
尝试编译模板类时出现链接器错误。我对 C++ 模板化编程和编译器的工作 (MSBuild/VS2012) 不太感兴趣,并且很难确定我做错了什么。我正在使用 /CLR 进行编译,当我尝试编译源文件时出现一系列链接器错误 (LNK2005),大致为:
ISaveStrategy.h:
SaveToXmlStrategy.h:
SaveToXmlStrategy.cpp:
实施.cpp:
c++ - Visual Studio 2012 链接问题
Visual Studio 最近似乎很疯狂。我正在开发一个简单的 c++ 项目,其中包括一个带有定义的标头 + 带有声明的 cpp 文件。而已。简单的包含保护,.h 包含在两个源文件中。现在我发现自己对链接问题感到头疼。有时只是编译并说一切正常,有时继续抛出 LNK2019 - 尽管没有对项目结构进行任何更改。突然,它突然决定编译,经过一些更改后又回到了初始状态。我已经在这个主题中描述了这个问题,但问题已经解决了。我还必须注意,我已将文件结构简化到最低限度。尝试过清理、重建,几乎是 VS 中的任何工具。有没有其他人遇到过这样的问题?
c++ - Visual Studio 认为函数已经定义?
我正在处理的一个项目有两个文件,一个是我自己的作品,一个是由同学编写的,用作一种 API。我的问题是,资源文件中定义的函数导致 VS2012 中的链接器错误。
我收到错误LNK2005,微软将其定义为:
已在对象中定义的符号
以装饰形式显示的给定符号是多重定义的。
资源文件中定义的三个函数ArgvFunctions.cpp
是:
在#includes
我的实现文件中:
如果它有帮助:在我遇到这个问题之前,我不得不抑制由此引发的错误ArgvFunctions.cpp
,因为其中的函数使用了 Microsoft 的版本,strtok()
并且strncpy()
由于安全问题而被微软弃用(我确保没有任何东西传递给据我所知,这些功能可能会使它们绊倒,所以这些问题无论如何都不是问题;而且,我没有时间或知识来替换strtok()
等等strtok_s()
)。
编辑:
哎呀,原来我对C++一无所知。谢谢大家。
c++ - 包括 Boost 文件系统标头
我有一个大项目。
在N.cpp
我需要使用boost::filesystem::exists(path)
来检查路径是否有效。
为此,我包括<boost/filesystem.hpp>
我收到以下错误:
如果我不包含头文件,我会得到:
什么是正确的使用方法boost::filesystem::exists
以便整个编译?
N.cpp
c++ - 在 C++ 中包含文件时重新定义函数(错误 LNK2005)
我是 C++ 新手,我有一个基本的疑问。
我正在创建一个法语动词共轭应用程序。
我有两个文件,一个 Conjugator.cpp 文件和一个 ErVerbs.cpp 文件。我想将大部分函数保留在 ErVerbs 源文件中,并使用共轭文件来使用这些函数。
以下是一些代码片段:
共轭器.cpp
ErVerbs.cpp
同样,我还有其他三个具有类似功能的此类 .cpp 源文件。
当我构建程序时,我收到一个错误,我正在使用的每个方法都已定义。
如果有人能告诉我如何将函数保存在单独的源文件中并将它们#include 到一个源文件中并在没有重新定义错误的情况下使用它们的函数,我将不胜感激。
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
c++ - SDL2,错误 LNK2005 对象已在 libcmt 中定义
所以这是一个常见错误,但所有帖子都说我需要更加注意我所包含的库版本。我正在使用 SDL2、OpenGL 和 SDL_Mixer...除了坚持使用 32 位库之外,我没有任何选择。
调试编译正常,但除非我将运行时库设置为 /MD,否则发布会给我 LNK2005 错误。我想避免这种额外的依赖。除非 Visual Studio 启动发布版本,否则生成的可执行文件会停止响应 SDL 初始化或某些 OpenGL 调用。所以我遇到了某种多线程问题,但我还没有接近理解它。一点帮助?
更新:/FORCE:MULTIPLE 允许使用 /MT 编译项目。但就像 /MD 一样,除非 Visual Studio 启动发布版本,否则生成的可执行文件会崩溃。这意味着什么?
UPDATE2:在 SDL 项目中使用 /MD。崩溃只是调试器没有捕获的内存错误。链接无关。
c - “已在目标文件中定义”和“找到一个或多个多重定义的符号”
通过MSDN的 RPC 教程,我刚刚创建了一个包含两个.c
文件的项目,如下所示:
和
编译器为什么以及在哪里看到多个符号定义或声明HelloProc(char*)
?
编辑::正如在这个SO_Question中得出的结论,包括.h
文件显然是最好的解决方案。但这是否让我们无法实现可以将一个.c
文件包含到另一个.c
文件中的设计?
奇怪的行为::第一次编译运行良好,但解决方案的重建因上述错误而中断。.c
您可以通过将文件名更改为to来检查多次首次编译,.cpp
反之亦然。为什么它会表现出这种行为?(我不确定其他人是否也通过给定的示例经历过这种情况)
c++ - c++ 类循环引用?
我正在开发一个小型游戏引擎,但我遇到了一些问题。解释:我有两个课程, cEntity
并且ObjectFactory
:
c实体
对象工厂
现在我正在向 in 构造函数添加新cEnity
内容,ObjectFactory
但cEntity
面临与循环引用相关的错误:使用ObjectFactor::addEntity()
我需要定义ObjectFactory.h
incEntity
类,但它会创建循环引用。