VC中使用openGL链接显示 无法解析的外部符号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VC中使用openGL链接显示 无法解析的外部符号相关的知识,希望对你有一定的参考价值。

error LNK2019: 无法解析的外部符号 __ftol2_sse,该符号在函数 "void __cdecl DrawOval(double (* const)[1000])" (?DrawOval@@YAXQAY0DOI@N@Z) 中被引用

error LNK2019: 无法解析的外部符号 "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z),该符号在函数 "void __cdecl Draw_Bezier_Curves(float (* const)[3],int,float,float * const)" (?Draw_Bezier_Curves@@YAXQAY02MHMQAM@Z) 中被引用

error LNK2019: 无法解析的外部符号 "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z),该符号在函数 "void __cdecl Draw_Bezier_Curves(float (* const)[3],int,float,float * const)" (?Draw_Bezier_Curves@@YAXQAY02MHMQAM@Z) 中被引用

可能是编译器,只看到头文件中的声明,但并未找到对应的CPP,有可能你没有写对应的CPP,或者你的CPP文件没有加入到工程中参与编译
或者你用的动态库,没有加入对应的*.lib
参考技术A 没有加入对应的*.lib

链接 OpenCV 失败,LNK 2019 未解析的外部符号

【中文标题】链接 OpenCV 失败,LNK 2019 未解析的外部符号【英文标题】:Linking OpenCV fails with LNK 2019 unresolved external symbol 【发布时间】:2019-03-25 15:01:34 【问题描述】:

我知道,还有一些关于该主题的请求,但我想我已经做了一切,写在那里。我刚刚下载了 OpenCV,但我无法运行它。

我做了以下操作:添加环境变量 OPENCV_DIR = ..\opencv\build\x64\vc14 添加环境变量 Path = %OPENCV_DIR%/bin

属性 --> C/C++ -> 常规 --> 其他包括目录设置为 ../opencv/build/include

Properties --> Linker --> General -->Additional Library Directoies added ../opencv/build/x64/vc14/lib

属性 --> 链接器 --> 常规 --> 添加了其他库目录 ../opencv/build/lib/Debug

属性 --> 链接器 --> 输入 --> 添加的附加依赖项: opencv_calib3d343d.lib opencv_core343d.lib opencv_features2d343d.lib opencv_flann343d.lib opencv_highgui343d.lib opencv_imgcodecs343d.lib opencv_imgproc343d.lib opencv_ml343d.lib opencv_objdetect343d.lib opencv_photo343d.lib opencv_shape343d.lib opencv_stitching343d.lib opencv_superres343d.lib opencv_ts343d.lib opencv_video343d.lib opencv_videoio343d.lib opencv_videostab343d.lib opencv_world343d.lib

将 CPU 调试设置为 x64

我的代码很简单:

#include <iostream>
#include "opencv2/opencv.hpp"

int main() 
    cv::Mat SrcImg = cv::imread("C:\\HomeC\\Screenshots\\SC_01.bmp", -1);

    std::cout << "Application finished. Press ENTER to exit..." <<     std::endl;
    std::cin.ignore();

我得到的错误是:LNK2019 unresolved external symbol "int __cdecl cv::_interlockedExchangeAdd(int *,int)" (?_interlockedExchangeAdd@cv@@YAHPEAHH@Z) referenced in function "public: void __cdecl cv::Mat::release(void)" (?release@Mat@cv@@QEAAXXZ)

LNK2019 unresolved external symbol "class cv::Mat __cdecl cv::imread(class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; const &amp;,int)" (?imread@cv@@YA?AVMat@1@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function main

所以,你可以看到,我阅读了文档,但仍然在谷歌上搜索了有关 OpenCV 错误的所有内容。

有没有人有其他想法,如何让它运行?

问候, 一月

【问题讨论】:

您使用的是 Visual Studio 2015 还是 2017? 我用的是VS2017 好的,我明白了 - 我刚刚删除并重新安排了项目。我认为,问题在于,我还在旧项目中通过 NuGet 引用了 OpenCV。不是它的工作。谢谢。 【参考方案1】:

好的,现在它正在工作。我也必须在路径文件夹中指定包含 dll 的文件夹。我还重新安排了项目,因为我还在旧项目中通过 NuGet 引用了 OpenCV。

【讨论】:

以上是关于VC中使用openGL链接显示 无法解析的外部符号的主要内容,如果未能解决你的问题,请参考以下文章

由于 VC9 编译器符号名称不匹配而导致无法解析的外部符号

Error:LNK2019无法解析的外部符号_sscanf, _vsprintf

VC++ LNK2001:仅在 64 位编译时无法解析外部符号

链接 OpenCV 失败,LNK 2019 未解析的外部符号

VC++编译错误提示-- error LNK2001: 无法解析的外部符号,望高手解决一下!

visual studio 2005 opengl 无法解析的外部符号