如何使用opencv和vs2012摆脱LNK2019未解决的外部符号错误

时间:2013-04-02 13:00:30

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

我是一个视觉基础程序员,尝试使用我发现使用OpenCV的一些源代码来运行可视化c ++。我对c ++一点也不是很有经验。我得到了未解决的外部符号错误,我花了几个小时阅读我在这里找到的关于它的每篇文章,每个答案都是...... “不要将x86与x64库链接,反之亦然”或 “将x引用添加到首选项 - >链接器”或 “将您的lib / dll文件添加到项目文件夹,然后将它们添加到您的解决方案”或 “显然你没有将libs添加到你的链接器”。

我已经完成了以下所有操作,但它无法正常工作......

1)我将“c:\ opencv \ build \ x64 \ vc11 \ staticlib;%(AdditionalLibraryDirectories)”添加到Project-> Preferences-> Linker-> General中的“Additional Library Directories”。没什么帮助。

2)我用x86目录尝试了上面的代码,没有帮助。所以它是x64 / x86问题的理论似乎不是答案。

3)I加入“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_obftete244d.lib; opencv_photo244d.lib; opencv_stitching244d.lib; opencv_ts244d.lib; opencv_video244d.lib; opencv_videostab244d.lib;%(AdditionalDependencies)“to my Project-> Preferences-> Linker-> Input ,用于Debug(活动)。没有帮助。

4)我尝试使用“lib”目录而不是“staticlib”目录。没什么帮助。

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

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

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

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

错误16错误LNK2019:函数“struct _IplImage * __cdecl loadFloatImage(char const *)”中引用的未解析的外部符号_cvCreateImage(?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:函数“struct _IplImage * __cdecl loadFloatImage(char const *)”中引用的未解析的外部符号_cvReleaseImage(?loadFloatImage @@ YAPAU_IplImage @@ PBD @ Z)C:\ dev \ CPP_console \ CPP_console \ FeaturesMain.obj CPP_console < / p>

1 个答案:

答案 0 :(得分:2)

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