问题标签 [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++ - 未解决的外部错误
我有以下 .h 和 .cpp 文件
如果必须,我将包含函数定义的完整代码
当我编译我的程序时,我得到了最后显示的错误
哈希.h
ht.cpp
主文件
当我尝试使用 vc2010 编译它时出现以下错误
1>main.obj : error LNK2005: "struct fpinfo * __cdecl InitHTable(struct fpinfo (* const)[50000])" (?InitHTable@@YAPAUfpinfo@@QAY0MDFA@U1@@Z) 已经在 ht.obj 中定义
1>main.obj : error LNK2005: "int __cdecl CreateTanker(struct tanker_record * const)" (?CreateTanker@@YAHQAUtanker_record@@@Z) 已经在 ht.obj 中定义
1>main.obj : error LNK2005: "int __cdecl Hash_CreateEntry(struct fpinfo * (* const)[50000],struct fpinfo,struct tanker_record * const)" (?Hash_CreateEntry@@YAHQAY0MDFA@PAUfpinfo@@U1@QAUtanker_record@@@ Z)已在 ht.obj 1>main.obj 中定义:错误 LNK2005:“int curr_tanker”(?curr_tanker@@3HA)已在 ht.obj 1>main.obj 中定义:错误 LNK2019:未解析的外部符号“int __cdecl Hash_CreateEntry (struct fpinfo *,struct fpinfo,struct tanker_record)" (?Hash_CreateEntry@@YAHPAUfpinfo@@U1@Utanker_record@@@Z) 在函数 _main 1>main.obj 中引用:错误 LNK2019:未解析的外部符号“struct fpinfo * __cdecl InitHTable (struct fpinfo *)" (?InitHTable@@YAPAUfpinfo@@PAU1@@Z) 在函数_main中引用
感谢您的帮助!!
visual-studio - LNK2005 将静态 openCV 库与 Visual Studio 和 QT Creator 链接时出错
我构建了静态 openCV 2.3 库。我的项目目前使用动态库没有问题,但现在我想使用静态库。我将库添加到我的 .pro 文件中:
并包括目录:
当我尝试构建时,出现以下错误:
任何帮助或建议表示赞赏。
c++ - 带有外部“C”的两个文件上的C ++ lnk2005错误,为什么?
我有一个带有外部“C”功能的 CPP。如果它们都在一个文件中,那么一切都很好。出于组织目的,我想将功能拆分为不同的文件。
所以假设我有这两个文件:
File_One.cpp
File_Two.cpp
我尝试以不同的顺序重新排列我的包含标头,甚至除了 file_two.cpp 的包含之外,甚至在 file_one.cpp 中没有放置包含标头,但我总是遇到相同的错误。
1) 错误 LNK1169:找到一个或多个多重定义符号
2) 错误 LNK2005: _MethodTwo 已在 File_One.obj 中定义
我到底做错了什么?我应该怎么做才能修复它?
谢谢!
c++ - 很多 LNK2005 错误
我正在尝试(或者更确切地说是在努力)创建一个小二十一点游戏。在一些 JavaScript 课程和一些小项目之后,我决定切换到 C++,发现它有点问题,这是我的代码:
http://pastebin.com/raw.php?i=4MgC1VcD
对于你们中的许多人来说,这段代码可能很糟糕,但它让我真的很高兴编码,即使它不像我想要的那样工作:) 这就是我得到的:
c++ - 编译 DLL 时出错 - 错误 LNK2005
我想编译一个 DLL,当我包含以下内容时出现此错误<afxdb.h>
:
我确实有一个DllMain
函数,xlfunctions.cpp
这是我的 DLL 的入口点。
Use of MFC property
设置为Use MFC in a Shared DLL
我该如何解决这个错误?
谢谢
c++ - C ++ LNK2005“已定义”错误-引用自身的文件
我继承了一个带有 3 个项目的 C++ 解决方案,一个编译为 .DLL,另外两个编译为 .EXEs 。DLL 可以自行构建,但其他两个在构建时会产生大约 65 个 LNK2005 错误,其中大部分是引用相同的 .obj 文件,如下面的日志所示:
....所以它继续!
我是一名 C# 编码员,只有基本的 C++ 知识,所以我对此感到迷茫。该解决方案是一个已有 15 年历史的 C 解决方案,我正在尝试在 VS2008 中将其重建为 C++ 解决方案。我已经设法构建了一次,没有任何改变,但也许从那时起一些配置设置已经改变。
有没有人有想法我可以开始寻找......?
非常感谢!
c++ - LNK 2005 链接器问题与 msvcrt.lib(MSVCR90.dll)
我正在与客户共享一个静态库。它使用的是 vs2008 sp 1。
我正在使用我用 mfc 构建的第三方库,带有共享 dll 和 /MD 选项发布版本
然后我构建了我自己的静态库,其中包括带有共享 dll 选项和 /MD 发布版本的 MFC 的第三方库。
我创建了一个测试 dll 以确保它正常工作。没有问题运行良好。我根本没有使用 MFC。只有客户这就是为什么他们告诉我将 MFC 与共享 dll 和 /MD 一起使用。
现在他们抱怨说他们得到了
xyz 已在 msvcrt.lib(MSVCR90.dll) 错误中定义。我认为这些看起来像 LNK2005 错误。
他们陈述如下:
“由于“我的库”与大型制造工具链构建中常见的许多库进行静态链接,因此具体链接失败。“我的库”正在导出这些常见的库函数,从而导致链接冲突。
他们还说:
“为了解决这个问题,“我的库”只能公开与单个 API(来自我的静态库)本身关联的函数,以保证不会导致链接冲突。当“我的库”为使用链接器选项和模块定义(.def 文件)语句的组合构建"
我不确定是什么导致了这个问题。这对我来说不是问题,但在那里。我在想他们可能在使用不正确的选项或错误的 CRT 版本时遇到问题?
另外,我不确定我能否满足他们可能不与 msvcrt.lib(MSVCR90.dll) 链接的要求,因为我的静态库确实依赖于标准 c 函数等。
我现在很迷茫,我确实研究了几个链接 如何分发 C 运行时 (CRT) 库
和
http://www.nuonsoft.com/blog/2008/10/29/binding-to-the-most-recent-visual-studio-libraries/
但是如果链接中说明了 CRT 的问题,那么我不确定如何弄清楚我在 vs2008 中使用的静态库是什么 CRT。我已经使用 /verbose 来查看它,但它不起作用。而且我知道dumpbin 或dependency walker 不会将它用于静态库。
这几天一直在为此苦苦挣扎,并且疯狂地研究。没有关于为什么他们可能会遇到 msvcrt.lib(MSVCR90.dll) 问题的答案。
c++ - 调试对象上的 LNK2005 和 LNK1169
我已经非常广泛地阅读了这两个错误,但尽管我付出了所有努力,但我在这里看不到问题所在。我已经完全用标题保护淹没了我的代码,看看这是否有帮助,结果没有改变。这是每个文件: Mystring.cpp
我的字符串.h
MystringDerived.h
MyStringDerived.cpp
和我得到的错误
有数百个错误行都看起来像这样。以我组织包含的方式,我绝对看不出我最终会如何包含多个副本。还有什么我想念的吗?任何见解都值得赞赏。这是作业(显然),所以当我在这里完成时,我肯定想真正理解问题。没有人向我展示过我做错了什么。
谢谢!
忘记包含 test.cpp。目前就这么简单:
MyStringDerived m = "测试"; cout<< m.getStr(); 获取字符();返回0;
c++ - VS 2010 C++ LNK2005 错误同时使用 #pragma once 和 #ifndef
我通过谷歌搜索了解了为什么会出现这些错误,但我不知道为什么当我尝试过 #pragma 一次和 #ifndef 保护时它们仍然会发生。
这是我的卡片.h
还有我的 Deck.h
这可能很明显,但我无法弄清楚......
根据要求,这里是 Card.cpp:
这是我为测试它们而写的东西:
c++ - C++ Unity 构建库文件,LNK2005
我是统一构建的新手。我一直在做一些研究,并从以下方面获得了很好的信息:
- http://buffered.io/posts/the-magic-of-unity-builds/
- http://oj.blackapache.net.s3.amazonaws.com/UnityBuilds.html
但是,现在我开始对我的一些项目进行更改,我有点困惑。
为简单起见,假设我的解决方案中只有 2 个项目。一个库项目(它创建一个 .lib 文件)和一个可执行项目。我们称它们为 LibProj 和 ExecProj。
这是每个项目的样子:
Verbose.cpp
用于调试目的。它包装了 ostream,所以我没有使用cout <<
,而是使用verbose <<
. 这样做是为了控制何时向控制台显示详细输出。在我的版本变体中,所有详细输出都被跳过。
我在两个项目中都有一个副本的原因Verbose.cpp
是我可以在我的 ExecProj 中获得详细的输出,而无需在调试中构建 LibProj。
Driver.hpp
并Client.cpp
使用verbose <<
. MyMainFile.cpp
调用它们中的函数。
不用说,使用正常的构建方式,一切正常。
现在问题...
我Unity.cpp
在 LibProj 中创建。它的内容是:
LibProj 构建得很好。但是,当我构建 ExecProj 时,它会在链接过程中中断:
所以基本上,它抱怨是因为我们正在重新定义 lib 文件中已经存在的详细函数。
我的问题是,为什么单独编译文件时它可以工作,但它不适用于统一构建?
是什么让一个 .lib 文件与另一个不同?我的意思是,从技术上讲,这两种构建案例LibProj.lib
都有符号VerboseMonitor::print
,这些符号由 ExecProj 重新定义。但是,统一构建案例失败了。
解决此问题的一种方法是创建另一个仅包含 Verbose.cpp 的 lib 文件并将其从两个项目中删除。但是,我想先了解为什么会发生这种情况。
另外,有人能想出更好的方法来解决这个问题吗?