我是一名visual basic程序员,正在尝试使用我发现的一些使用OpenCV的源代码来启动和运行一个可视化的c++。我对c++一点经验都没有。我收到了未解决的外部符号错误,我花了几个小时阅读了我能在这里找到的每一篇关于它的文章,每个答案都是……“不要将x86与x64库链接,反之亦然”或“添加x引用到首选项->链接器”或“将库/dll文件添加到项目文件夹中,然后将它们添加到解决方案中”或“显然你没有将库添加到链接器中”。
我已经做了以下所有的事情,但是没有成功……
1)我在“项目”->“首选项”->“链接器”->“常规”中,将"c:\opencv\build\x64\vc11\staticlib;%(AdditionalLibraryDirectories)“添加到我的”其他库目录“中。一点帮助都没有。
2)我尝试了上面的x86目录,但没有什么帮助。因此,认为这是一个x64 / x86问题的理论似乎并不是答案。
3)我添加了"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)我在我的Project->Preferences->C/C++->General->Additional包含目录中添加了"c:\opencv\build\include;%(AdditionalIncludeDirectories)“。没帮上忙。
它似乎不是这些东西中的任何一个。有没有人知道这个错误的解决方案,而不涉及我已经尝试过的这些东西?
以下是我收到的一些错误:
Error 16 error LNK2019: unresolved symbol _cvCreateImage referenced in function "struct _IplImage * __cdecl loadFloatImage(char const *)“(?loadFloatImage@@YAPAU_IplImage@@PBD@Z)?loadFloatImage@@YAPAU_IplImage@@PBD@Z CPP_console error 17 Error LNK2001: unresolved symbol _cvCreateImage char CPP_console error 18 Error LNK2019: unresolved symbol _cvReleaseImage in function "struct _IplImage * __cdeclC:\dev\CPP_console\CPP_console\FeaturesMain.obj loadFloatImage(char const *)“(?loadFloatImage@@YAPAU_IplImage@@PBD@Z) char CPP_console
发布于 2013-04-07 23:03:41
我找到了解决方案。VS2012出现故障。我认为我的项目设置为x64,因为当我单击Build -> Configuration Manager -> Platform时,除了"Win32“和"Edit”之外,没有其他平台选项。当我点击“编辑”时,它显示平台是x64,但它复制了"Win32“中的设置。这似乎是VS2012中的一个小故障。事实是,我没有编辑当前的平台,即使我点击了“编辑”按钮。相反,它是在创建一个新的平台。但因为我单击了编辑按钮,所以我认为它告诉我我的平台是x64,因为它选择了它。但不是,它是在创建一个新的平台。而且它真的不应该说这个项目可以是x64,而是复制Win32的设置!总之,在VS2012中似乎有多个小故障。因此,为了解决我的问题,我不得不点击“编辑”链接,并告诉它从"“复制设置,而不是从Win32复制设置(空白是唯一的其他选项)。这创建了一个名为x64的新平台选项,并将其更改为显示我的平台现在是x64。此外,这样做会神奇地在平台下拉列表中的“编辑”按钮旁边出现一个名为“新建”的按钮,并且“编辑”按钮不再像新按钮一样工作(它不再提供“从____复制设置”的选项)。但是“新建”按钮仍然允许你创建一个x64平台,并且从Win32复制设置,这是愚蠢的。但至少现在当我点击编辑时,它实际上更像是一个编辑按钮。此菜单区域中的VS2012已被窃听。无论如何,当我把它完全改为x64时,我所有的链接错误都消失了,因为我使用的是x64版本的OpenCV。如果其他人正在使用x64版本的OpenCV:确保你的“平台”说的是x64,而不是Win32,否则它会给出你的LNK错误。
https://stackoverflow.com/questions/15764782
复制相似问题