提问人:Jos 提问时间:8/19/2013 更新时间:12/9/2014 访问量:5294
Visual Studio 中的 OpenCv 未解析的外部符号错误
OpenCv unresolved external symbol error in Visual Studio
问:
我已经链接到我想使用的库,并将头文件添加到我的项目中。并且代码没有在红色波浪线中显示任何错误,但是当我尝试运行它时,它给了我以下错误:
Error 1 error LNK2001: unresolved external symbol _cvDestroyWindow C:\Users\Jos\documents\visual studio 2010\Projects\ocv\ocv\opcv.obj ocv
Error 2 error LNK2001: unresolved external symbol _cvWaitKey C:\Users\Jos\documents\visual studio 2010\Projects\ocv\ocv\opcv.obj ocv
Error 3 error LNK2001: unresolved external symbol _cvNamedWindow C:\Users\Jos\documents\visual studio 2010\Projects\ocv\ocv\opcv.obj ocv
Error 4 error LNK2001: unresolved external symbol _cvLoadImage C:\Users\Jos\documents\visual studio 2010\Projects\ocv\ocv\opcv.obj ocv
Error 5 error LNK2001: unresolved external symbol _cvShowImage C:\Users\Jos\documents\visual studio 2010\Projects\ocv\ocv\opcv.obj ocv
Error 6 error LNK2001: unresolved external symbol _cvReleaseImage C:\Users\Jos\documents\visual studio 2010\Projects\ocv\ocv\opcv.obj ocv
Error 7 error LNK1120: 6 unresolved externals C:\Users\Jos\documents\visual studio 2010\Projects\ocv\Release\ocv.exe ocv
这是代码:
#include "highgui.h"
int main(int argc, char **argv) {
IplImage* img = cvLoadImage(argv[1],CV_LOAD_IMAGE_UNCHANGED);
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
}
答:
0赞
virusrocks
8/19/2013
#1
如果您在调试模式下运行,请使用调试库,否则发布一次。您可以在 OPENCV 文件夹层次结构中找到这两个版本。
评论
0赞
Jos
8/19/2013
是的,我已经做到了。我添加了以“d”结尾的库来调试库,而其他的则用于发布库
0赞
virusrocks
8/19/2013
如果我没记错的话,cvLoadImage 和 cvNamedWindow 不是“highgui.h”的成员。我不记得它们所属的确切标题。我必须看看家里的代码。
1赞
Jacob
8/19/2013
#2
由于您使用的是最新版本的 OpenCV,因此可以通过以下方式访问 C 模块
#include <opencv2\highgui\highgui_c.h>
或
#include "opencv2\highgui\highgui_c.h"
假设该文件夹位于“包含目录”列表中。opencv2
但是,我强烈建议您开始在 OpenCV 中使用对象(而不是 )和其他 C++ 等效项。这将使您的生活更轻松,而不会对性能造成重大影响。Mat
IplImage
评论
0赞
Jos
8/19/2013
对不起,仍然不起作用。但我使用的是 c++。我只是在检查我是否为 OpenCv 正确设置了 VS。
0赞
Jacob
8/19/2013
您是否遇到相同的错误?你能读取头文件吗?highgui_c
0赞
Jacob
8/19/2013
另外,您是如何链接这些库的?是否确定在项目设置中指定了正确的目录和库名称?
0赞
Jos
8/19/2013
在 Properties->Linker 中,我添加了库目录。这是我使用的路径 D:\opencv\build\x64\vc10\lib,然后为调试和发布模式添加了单独的库。在包含目录中,我添加了路径 D:\opencv\build\include\opencv 和 D:\opencv\build\include 。希望我是正确的。
1赞
Jos
8/19/2013
好的,我明白了。问题出在平台上。它是在 Win32 中。所以我把它改成了x64,并从Win32复制了设置。现在终于工作了。谢谢你的帮助,伙计。
0赞
Andrey Smorodov
8/19/2013
#3
您似乎没有将 highgui.lib 附加到项目中,并且可能是 legacy.lib。(我在文件名中省略了版本号)。
4赞
Jos
8/20/2013
#4
好的,它终于起作用了。我的电脑是一个系统。但该项目是在平台上运行的。所以我把它改成了,并从中复制了设置。64-bit
Win32
x64
Win32
评论
.lib