1

我是一名 Visual Basic 程序员,试图使用我发现的一些使用 OpenCV 的源代码来启动和运行 Visual C++。我对 C++ 完全没有经验。我遇到了未解决的外部符号错误,我花了几个小时阅读我可以在这里找到的每一篇关于它的文章,每个答案都是......“不要将 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/C++->常规->附加包含目录中添加了“c:\opencv\build\include;%(AdditionalIncludeDirectories)”。没有帮助。

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

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

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

4

1 回答 1

2

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

于 2013-04-07T15:03:41.077 回答