Visual Studio 中的 OpenCv 未解析的外部符号错误

OpenCv unresolved external symbol error in Visual Studio

提问人:Jos 提问时间:8/19/2013 更新时间:12/9/2014 访问量:5294

问:

我已经链接到我想使用的库,并将头文件添加到我的项目中。并且代码没有在红色波浪线中显示任何错误,但是当我尝试运行它时,它给了我以下错误:

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");
}   
C visual-studio-2010 opencv 图像处理 未解析的外部

评论

0赞 Jacob 8/19/2013
您运行的是哪个版本的 OpenCV?如果这很难回答,只需列出您要链接的文件的名称即可。.lib
0赞 Jos 8/19/2013
它是246最新版本

答:

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++ 等效项。这将使您的生活更轻松,而不会对性能造成重大影响。MatIplImage

评论

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-bitWin32x64Win32