问题标签 [unresolved-external]

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 投票
2 回答
3122 浏览

c++ - 在 cpp 文件中定义方法时未解决外部问题,但在标头中未解决

更新 2:找到导致此问题的前向声明错误

更新使用 Visual Studio 2010 库存编译器编译,启用了 c++0x。

我有一个具有奇怪行为的成员函数的类。

当我在 cpp 文件中定义方法时,链接器会因“未解析的外部符号”错误而崩溃。当我将定义移动到标题时,它编译得很好。

1)这不是模板方法 2)cpp 文件肯定正在编译 3)我很难过

有什么想法吗?

头文件

.cpp 文件

调用调用

链接错误

0 投票
1 回答
53 浏览

unresolved-external - 又一个未解决的外部案例

第一次问。

这是交易:

我有一个助手类(至少现在它是一个类),它有几个数学函数,我在整个项目中使用。

执行:

(移除了 3 个主体以节省帖子空间)

现在,当我使用它时,假设在一个名为“creature”的类中,我将 customUtils.h 文件包含在“creature”的标题中。并使用以下 4 个函数中的任何一个:cUtil::func_name()。有时我会遇到未解决的外部错误,例如

它出现在 cUtil 中的所有函数以及使用这些函数的所有类中。

我说它有时会出现,因为它就是这样做的——我将重建项目,它会重新出现。为了再次清理它,我会更改 cUtils 代码的某些部分,或者它包含在其他类中的方式,或者任何让它再次运行的东西。有一段时间,清理-> 编译 customUtils.cpp-> 然后构建其余的工作,但不再工作。

对于像我这样未经训练的眼睛来说,这似乎是完全随机的,我已经竭尽全力抓住。我正在使用 Microsoft Visual Studio 2010。这是一个使用 openGL 和 glut 的控制台项目。

0 投票
1 回答
1554 浏览

opengl - CUDA 项目中 gluPerspective 的未解析外部符号

实际上,我知道这是一个流行的链接问题,通常可以通过添加 #pragma(lib, "glu32.lib") 或在 Visual Studio 配置中添加 glu32.lib 来解决。

但是,我的问题很奇怪,上面的解决方案没用。

我将一些包含 OpenGL 函数(如 gluPerspective 和 gluBuild2DMipmaps)的额外文件添加到来自 CUDA SDK 的 CUDA 项目 VolumeRender 中。

编译后,我发现那些额外的文件会出现 glu 函数的 Unresolved External Symbol 错误。但是,当我将这些 glu 函数放入原始 Cpp 文件时,它工作正常。

我曾经尝试过上述两种解决方案,但没用。谁能给我一个提示来解决这个难题?

0 投票
3 回答
18019 浏览

c++ - 如何在 Visual Studio 2010 中使用来自不同 C++ 项目的函数?

我想在 Visual Studio 2010 的同一解决方案中构建两个可以相互交互的 C++ 项目。我在目录下创建了一个解决方案C:\Users\me\Desktop\SolutionDir。这两个项目分别在C:\Users\me\Desktop\SolutionDir\FirstProject和下创建C:\Users\me\Desktop\SolutionDir\SecondProject

我的第一个项目包含两个文件,一个头文件function.h和一个cpp文件function.cpp

函数.h

函数.cpp

我的第二个项目包含主文件main.cpp

主文件

C:\Users\me\Desktop\SolutionDir\我在 SecondProject 中添加了目录Configuration Properties > C/C++ > General > Additional Include Directories。我仍然得到经典错误:error LNK2019: unresolved external symbol调用函数时print_stuff()

有任何想法吗 ?

0 投票
2 回答
418 浏览

c++ - “未解决的外部 _WinMain@16”如果我将 WndProc 移动到另一个 cpp 文件

对于 Windows 应用程序,我正在尝试获取CreateWindow()并且WndProc()(或我的版本)成为在开始时创建的单例类的一部分,_tWinMain()但由于尝试将函数转移到GameHandler.h并且GameHandler.cpp我不断收到“未解析的外部符号 _WinMain@ 16"。它们最初是全局函数main.cpp,一切都编译得很好,然后我决定将它们移到 GameHandler ,因为我得到的只是未解决的外部函数,即使我尝试将它们移回main.cpp.

我在 VS2010 中这样做,该项目是作为 Windows 应用程序创建的,并且在属性中没有设置特定的入口点(我仔细检查了到目前为止我发现的每个解决方案都说这是因为它是一个控制台应用程序 - 这不是t)。

我目前拥有的代码如下所示。实际项目有几千行其他代码,我认为它不相关(但很高兴证明是错误的。虽然实际的窗口创建代码是相关的,但我认为代码本身并不相关)是问题所在(除了我留下的),它是 GameWindowProc() 和/或 CreateGameWindow() 的位置或它们的调用方式。实际的窗口创建代码取自NeHe 的教程。尝试仅编译以下代码给出上述未解决的外部。

主.cpp:

在 GameManager.h 中:

在 GameManager.cpp 中:

正如你所看到的,我已经设置了一些预处理器条件来在 GameManager 中main.cpp或作为 GameManager 的一部分的麻烦函数之间切换。#define USEGMGR在开头注释掉以GameManager.h将它们作为全局函数在main.cpp.

有人可以告诉我我做错了什么吗?

编辑:删除了关于如果你让它运行就无法退出的评论。

0 投票
2 回答
39273 浏览

c++ - 由于未解析的外部因素,OpenCV 无法编译——LNK2019

我是 OpenCV 的新手,一直在尝试在 Visual Studios 2010 Ultimate 中进行设置。我完全按照文档进行了操作,并按照说明链接了文件。以下是我正在使用的其他库:

以及他们所有的 Release 对应物。但是,当我尝试调试和编译给我的示例代码时,我收到以下错误。(我在某处读到您必须编译和发布项目才能使其正常工作?这也是真的吗?)

我浏览了所有目录并确保这些库实际上确实存在于我的 OpenCV 文件中,并且我的下载没有损坏或任何东西。任何帮助,将不胜感激!

-Logantf17

0 投票
2 回答
211 浏览

templates - 模板错误:未解决的外部和内部朋友类

我正在使用模板编写二叉搜索树。这个想法是我有一个带有虚拟运算符重载函数的纯抽象基类,用于将它与继承它的相同类型的其他类进行比较。这个类,或者更确切地说是从它继承的任何类,代表 BST 中的“键”。

一个很好的例子是我一开始就打算这样做,即将着色器源(在字符串中,从着色器文件中解析)作为值添加到 BST,键是类型ShaderComparable,它保存文件名着色器,用于 BST 中的关键比较。

问题是,当我编写代码时,它可以很好地编译,但只要我将 BST 类的一个实例粘贴到 main 中并尝试运行它,就会出现链接“未解决的外部”错误。

代码

搜索树.hpp

搜索树.cpp

源代码中有更多代码,我只是不想全部发布,希望避免歧义。迭代器定义通常是这样的:

等等

错误

问题

为什么我会收到这些错误?我能做些什么来阻止这些?

0 投票
1 回答
5347 浏览

c++ - 使用 extern 声明全局变量

我的问题是在以下情况下:

文件1.h

文件1.cpp

这里 graph_wnd_sensor1D 有一个值并且 ShowWindow 工作

文件 2.h

在这里,在 init 中,应用程序崩溃了,因为 graph_wnd_sensor1D 的信息与前一个不同。

在文件 2.cpp 中,我想使用 graph_wnd_sensor1D。但视觉产量

  • 所以想法是让 graph_wnd_sensor1D 成为一个在 file1 中声明的全局变量!我怎么能解决这个问题?*
0 投票
1 回答
4054 浏览

visual-c++ - 错误 LNK:未解析的外部符号,由虚函数引起

以下是我编译代码时的错误。很抱歉我不能在这里分享我的代码。仅供参考,我不使用任何外部库,所以我真的不确定这些链接器错误。它们似乎来自我在DeviceManager课堂上声明的虚函数。它们各自的实现在另外两个类中。

有人可以帮我解决这些错误吗?

更新 1(可能的解决方案):

问题似乎是因为在DeviceManager类中声明的虚函数不是纯虚函数并且在.cpp类中没有定义DeviceManager

如果DeviceManager该类没有任何非虚函数,则将虚函数设为纯函数将是解决方案。像这样virtual void testFunction();的东西并不纯粹,因此将其更改virtual void testFunction()=0;为解决方案。为此,在继承DeviceManager该类的其他类中实现此虚函数的定义就足够了。在这种情况下,DeviceManager类变得抽象,因此无法实例化。

但就我而言,DeviceManager该类也有一些非虚拟函数,并且还需要实例化才能调用非虚拟函数。因此,解决方案是在继承该类的其他类中的声明和定义之外,实现该类.cpp中虚函数的定义。DeviceManagerDeviceManager

0 投票
0 回答
434 浏览

c++ - C ++附加随机序数导致未解析的外部符号

我只是无法弄清楚Visual C++ 2010在做什么,我已经用谷歌搜索了好几个小时,但我仍然不知道发生了什么。我真的非常感谢我能得到的任何帮助。

我有一个要从中导入函数的 DLL ,并且我已经完成了所有通常的动作。我从DLL创建了一个.lib 文件,并创建了一个头文件,其中包含和extern "C"__stdcall

然而,尽管我付出了所有努力,编译器仍然抱怨:

这是真正的踢球者,你看到那里的序数吗?@4<-- 我没有在我的代码中指定任何地方,VC++ 只是决定它显然喜欢数字 4。在 DLL 中,函数 Connected 实际上被列为序数 11,而不是 4。

如果我在 .lib 文件中将函数更改为序数 4,则项目编译,但 DLL 会抱怨,因为它已连接列为 11。

用于 NtDirect.dll 的BinDump:

main.cpp的代码:

ninja.h中的声明:(仅显示连接以节省空间)

NtDirect.def中导出:(我已经用 AND 尝试过这个,但没有指定序数。)

已经尝试过:

从包含Connected@11AND的 .def 文件构建 .lib Connected。我也尝试过使用除了 Connected 之外的其他功能,它们也不起作用。我尝试过使用我的导入声明(添加和删除extern "C")。

我还确保 DLL 与我的可执行文件位于同一文件夹中,并且我已将 NtDirect.dll 添加到链接器中,以便它可以访问。

我正在运行 Windows 7 64 位。