问题标签 [linker-errors]

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 投票
6 回答
29013 浏览

visual-c++ - Visual C++ 未解析的外部符号(找不到我自己的函数之一)

这是一个非常基本的问题,目前让我感到沮丧。假设在一个解决方案中,我有两个项目。我们将第一个项目称为 SimpleMath。它有一个头文件“Add.h”,其中

以及具有的实现“Add.cpp”

现在假设在第二个项目中我想使用 add 函数。但是,这段代码:

#include "..\SimpleMath\Add.h"

导致“未解析的外部符号”。如何让第二个程序“了解” .cpp 文件中的实际实现。作为旁注,所有代码都是虚构的,这不是我实际编程的方式。

0 投票
4 回答
1443 浏览

c++ - 如何解决此 VC++ 6.0 链接器错误?

这是一个 Windows 控制台应用程序(实际上是一个服务),它是一个以前的人在 4 年前构建并安装并运行的。我现在需要进行一些更改,但甚至无法构建当前版本!这是构建输出:

如果我使用/NODEFAULTLIB,那么我会收到很多错误。该代码实际上并没有使用_socket_noblock,但我在“网络”上找不到任何东西。大概它被我链接到的某个库使用,但我不知道它在哪个库中。

--- 阿利斯泰尔。

0 投票
2 回答
847 浏览

c++-cli - 在 C++/CLI 中使用 PIMPL 习惯用法时的 MSVC++ 链接器警告

我正在使用 C++/CLI(9.0 版)编写一个 .NET 程序集,并且我想使用 PIMPL 习惯用法来避免在我的公共标头中放置不必要的东西。不幸的是,当我尝试转发声明一个类,然后对其使用跟踪句柄时,我收到链接器警告 4248:

警告 LNK4248:“MyNamespace.PrivateClass”的未解析 typeref 令牌 (0100000E);图像可能无法运行

无论我对实现类使用 CLI 类还是本机类,这似乎都是这种情况。

示例代码如下所示:

不幸的是,微软对警告的解释并没有提供太多信息。

0 投票
5 回答
17025 浏览

c++ - 错误 LNK2001 和错误 LNK2019 (C++) -- 请求了解这些错误

好的,所以我刚刚完成了最后一个编译器错误(所以我想)并且出现了这些错误:

好的,这是一个简短的概述。

PI 是 WeaponsDB 中的静态常量,其他类使用 Wea​​ponsDB::PI 和适当的#include 引用(这有什么问题?)

大多数其他错误源于 allegro 游戏库中计时器的静态变量和静态方法。

是什么导致了这些错误,我该如何摆脱它们?

提前致谢

----------------编辑-------------------

根据要求,在哪里声明和定义了 WeaponsDB::PI。它在 WeaponsDB.h 中声明:

但它是在另一个类 Driver.cpp 中定义的:

如果这是我的代码的问题之一,我很想知道为什么会导致错误。

0 投票
1 回答
939 浏览

visual-studio-2005 - 使用 VS2005 编译 openttd - freetype 中的链接器错误

嗯,这是一个很好的模糊的。我正在尝试在 Visual Studio 2005 中编译最新的开放式传输大亨源代码。(这是一个使用 zlib、dx8 和其他一些相当常见的库的 C++ 应用程序)。

我收到一些与 freetype 依赖项有关的链接器错误:

我已经下载了最新的 freetype stable 并编译它(也在 VS2005 中),并将 ft2build.h 和 freetype 包含目录放入我的 VS8/VC/include 目录中,并将 libfreetype2.lib 库如此编译到我的 VS8/ VC/lib 目录。我会错过什么?

谢谢!

0 投票
2 回答
699 浏览

c++ - C++新手:有各种各样的链接问题

我在 Visual Studio 2008 中遇到了 tessdll 的几个问题。仅供参考,我将此应用程序创建为 MFC 应用程序,我这样做只是为了利用我需要的简单 GUI。从那里开始就是直接的 C++ 和 win32。

由于某种原因,这作为调试版本构建得很好(因为我已经包含了我需要的头文件和 lib 文件,并且 dll 驻留在我可以放置的每个目录中......)。

因此,在构建发布版本期间存在链接问题:

此外,作为参考,可以在此处找到 tessdll.h 的源代码: http ://code.google.com/p/tesseract-ocr/source/browse/trunk/tessdll.h?r=165

更多细节:

  • 我从工具栏调试并使用集成调试器。
  • 我使用 Batch Build 创建发布版本。
0 投票
2 回答
3069 浏览

c++ - 静态库多定义链接错误

所以我正在尝试构建一个小型 3D 引擎作为 VC++ 8.0 的练习。我有一个 MathLib 静态库和一个由我的 TestBed exe 链接的 Render 静态库。现在 Render 有两个类:Color 和 DXManager3D。颜色包括我来自 MathLib 的 Vector.h 很好,没有问题。

第二次我尝试在 DXManager3D 中包含 Vector.h,它让我大吃一惊,说符号被定义了两次,第二个定义被忽略(来自 lib 的警告)。我认为可能包括它两次会导致此问题,因此作为测试,我从 Color.h 中删除了 Vector.h 并将其留在 DXManager3D.h 中 - 同样的问题。我进行了三次检查,以确保我将所有东西都包裹在 ifndef 中以防止这种情况发生,所以我只能摸不着头脑。

DXManager3D.obj : 警告 LNK4006: "public: __thiscall Math::Vector::Vector(void)" (??0Vector@Math@@QAE@XZ) 已在 Render.obj 中定义;第二个定义被忽略

真正让我困惑的是,当我将 Render.lib 与 TestBed 分开构建时,它不应该链接任何东西,因为它是一个静态库,对吧?我仍然收到多个符号定义警告。如果我在 main 中实例化 DXManager3D,我的警告就会变成错误。

Render.lib(DXManager3D.obj) : error LNK2005: "public: __thiscall Math::Vector::Vector(void)" (??0Vector@Math@@QAE@XZ) 已经在 WinMain.obj 中定义

是的,我有 F1 的 LNK4006 和 LNK2005,而 MSDN 中的解决方案对我不起作用。抱歉,如果之前有人问过这个问题,我找不到任何可靠的东西来帮助我使用搜索功能。

谢谢!

0 投票
1 回答
1081 浏览

c++ - 编译 vshadow 时出现链接器错误,卷影复制服务 SDK 的一部分

尝试为 VSS SDK 编译 c++ 项目时出现此链接器错误

ShouldBlockRevert 使用两次,一次在顶部声明时,一次在实际使用时。

在这里声明:

并在这里使用:

抱歉,我对 C++ 不太擅长。

0 投票
4 回答
5562 浏览

c++ - Borland C++ Builder 6 上的奇怪链接器错误

我一直在尝试编译 Borland C++ Builder 6 项目,但链接器因以下错误而死:

奇怪的是它除了扩展名之外没有给出任何文件名。它看起来像一个内部错误,尽管谷歌搜索它没有给出任何结果。有没有人遇到过这个错误?

== 已解决 ==

它实际上是导致链接器命令行损坏的源文件之一中的无效编译器指令。感谢帮助。

0 投票
6 回答
320 浏览

c++ - throw-catch 导致联动错误

我收到以下类型的链接错误:

Festival.obj:错误LNK2019:函数__catch$中引用的未解析外部符号“public:void __thiscall Tree::add(class Price &)”(?add@?$Tree@VPrice@@@@QAEXAAVPrice@@@Z)? AddBand@Festival@@QAE?AW4StatusType@@HHH@Z$0

我曾经认为它与 try-catch 机制有关,但后来被告知并非如此。这是问题的更新版本。

我正在使用 Visual Studio 2008,但我在 g++ 中有类似的问题。

相关代码:

在 Festival.cpp

在 Tree.h 中:

有趣的是,当类型 T 是像 int 这样的原始类型时,当我尝试使用 Tree 函数时,我没有出现链接错误。