visual-c++ - 如何使用 opencv 和 vs2012 摆脱 LNK2019 Unresolved external symbol 错误

标签 visual-c++ opencv visual-studio-2012 lnk2019

我是一名 visual basic 程序员,试图使用我发现使用 OpenCV 的一些源代码来启动和运行 visual c++。我对 C++ 一点经验都没有。我遇到了 Unresolved external symbol 错误,我花了几个小时阅读我能在这里找到的每篇关于它的文章,每一个答案都是…… “不要将 x86 与 x64 库链接,反之亦然”或 “将 x 引用添加到首选项->链接器”或 “将您的 lib/dll 文件添加到项目文件夹,然后将它们添加到您的解决方案”或 “显然您没有将库添加到您的链接器”。

我已经完成了以下所有操作,但都没有用...

1) 我在项目->首选项->链接器->常规中将“c:\opencv\build\x64\vc11\staticlib;%(AdditionalLibraryDirectories)”添加到我的“其他库目录”中。一点帮助也没有。

2) 我用 x86 目录尝试了上面的方法,一点帮助也没有。因此,它是 x64/x86 问题的理论似乎并不是答案。

3) I added "opencv_calib3d244d.lib;opencv_contrib244d.lib;opencv_core244d.lib;opencv_features2d244d.lib;opencv_flann244d.lib;opencv_gpu244d.lib;opencv_haartraining_engined.lib;opencv_highgui244d.lib;opencv_imgproc244d.lib;opencv_legacy244d.lib;opencv_ml244d. lib;opencv_nonfree244d.lib;opencv_objdetect244d.lib;opencv_photo244d.lib;opencv_stitching244d.lib;opencv_ts244d.lib;opencv_video244d.lib;opencv_videostab244d.lib;%(AdditionalDependencies)”到我的项目->首选项->链接器->输入,用于调试(积极的)。没有帮助。

4) 我用“lib”目录而不是“staticlib”目录尝试了上面的操作。一点帮助也没有。

5) 我尝试将所有调试版本的 *.lib 文件从 lib 目录复制到我的项目文件夹中,然后 Project->Add->Existing Item 将它们添加到我的项目中。没有帮助。

6) 我将“c:\opencv\build\include;%(AdditionalIncludeDirectories)”添加到我的项目->首选项->C/C++->常规->附加包含目录。没有帮助。

它似乎不是这些东西中的任何一个。有谁知道不涉及我已经尝试过的任何这些事情的此错误的解决方案?

以下是我遇到的一些错误:

错误 16 error LNK2019: 函数“struct _IplImage * __cdecl loadFloatImage(char const *)”中引用的未解析外部符号 _cvCreateImage (?loadFloatImage@@YAPAU_IplImage@@PBD@Z) C:\dev\CPP_console\CPP_console\FeaturesMain。 obj CPP_console 错误 17 error LNK2001: 未解析的外部符号 _cvCreateImage C:\dev\CPP_console\CPP_console\TextDetection.obj CPP_console Error 18 error LNK2019: 函数“struct _IplImage * __cdecl loadFloatImage(char const *)”中引用的未解析的外部符号_cvReleaseImage (?loadFloatImage@@YAPAU_IplImage@@PBD@Z) C:\dev\CPP_console\CPP_console\FeaturesMain.obj CPP_console

最佳答案

我找到了解决方案。 VS2012 出现故障。我以为我的项目设置为 x64,因为当我单击构建 -> 配置管理器 -> 平台时,除了“Win32”和“编辑”之外没有其他平台选项。当我点击“编辑”时,它说平台是 x64,但它从“Win32”复制了设置。这似乎是 VS2012 中的一个小故障。事实上,我并没有编辑当前平台,即使我点击了“编辑”按钮。相反,它正在创建一个新平台。但是因为我点击了编辑按钮,我认为它是在告诉我我的平台是 x64,因为这是它选择的。但是不,它正在创建一个新平台......它真的不应该说该项目可以是 x64,而是从 Win32 复制设置!无论如何,VS2012 中似乎存在多个故障。所以要解决我的问题,我必须单击“编辑”链接,并告诉它从“”而不是从 Win32 复制设置(空白是唯一的其他选项)。这创建了一个名为 x64 的新平台选项,并将其更改为显示我的平台现在是 x64。此外,这样做神奇地使平台下拉菜单中“编辑”按钮旁边出现一个名为“新建”的按钮,并且“编辑”按钮不再像新按钮一样(它不再提供“复制”选项__”的设置。但是“新建”按钮仍然允许您创建 x64 平台,但从 Win32 复制设置,这是愚蠢的。但至少现在当我点击编辑时,它实际上起作用了更像是一个编辑按钮。VS2012 在这个菜单区域有问题。无论如何,当我将它完全更改为 x64 时,我所有的链接错误都消失了,因为我使用的是 OpenCV 的 x64 版本。如果其他人正在使用 x64 OpenCV 版本:确保您的“平台”显示的是 x64,而不是 Win32,否则它会给您带来 LNK 错误。

关于visual-c++ - 如何使用 opencv 和 vs2012 摆脱 LNK2019 Unresolved external symbol 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15764782/

相关文章:

c - OpenCV中两点之间的距离

javascript - 适用于 Windows Phone 的 Cordova Visual Studio 2012 Express : Open External PDF URL

c++ - Visual Studio 2010 和 2012 中 STL 容器字节大小的差异

c++ - 调用重载运算符时出现歧义

c++ - 通过引用捕获异常时不会创建临时对象?

java - OpenCV JNI : Java/native handling of Mat - possibility for delete getting called twice?

c++ - 用Visual Studio 11编译出来的可执行文件有什么特别之处导致无法在Windows XP上执行?

visual-studio-2010 - 在Visual C++中比较图像和视频

visual-studio - 如何在 Visual Studio 2010 中进行并行构建?

android - Android OpenCV教程5相机控制崩溃