在Visual Studio上安装OpenCV时出现问题

时间:2014-08-26 12:48:22

标签: visual-studio opencv visual-c++ configuration

我正在尝试在64位Windows 7系统中使用Microsoft Visual Studio 2008设置一个简单的OpenCV项目。我没有系统的管理员权限,因此,我不能在这里全新安装OpenCV。

但是,我确实拥有在simillar平台上编译的OpenCV的bin,include和lib目录。

我推出了'Visual C ++ - >一般 - >空项目'并创建了一个.cpp文件,其中包含:

#include <opencv/cv.h>
#include <opencv/highgui.h>
void main()
{
    cv::Mat frame = cv::imread("D:\\Images\\lena.bmp");
    cv::imwrite("D:\\lena_bw.bmp",frame);
}

在'Property-&gt; Configuration Property-&gt; C / C ++ - &gt; General-&gt; Additional Include Directories'中,我提供了指向OpenCV的'include'目录的链接。

在'Property-&gt; Configuration Property-&gt; Linker-&gt; Input-&gt; Additional Dependencies'中,我提供了opencv_core230.lib,opencv_highgui230.lib,opencv_imgproc230.lib等的路径。

代码构建正常,但是当我运行它时,我得到:

Unhandled exception at 0x734761e7 in OpenCVTest.exe: 0xC0000005: Access violation reading location 0xcccccccc.

No symbols are loaded for any call stack frame. The source code cannot be displayed.

我现在正在接受自己的想法。我是Visual Studio平台的新手。

请帮我弄清楚这项工作的方法。

+++++++++++++++++++++++++++++++++++++++++++++++ +

在'release'模式下运行时,我在编译期间收到以下错误:

1>HelloOpenCV.obj : error LNK2001: unresolved external symbol "public: __thiscall cv::_InputArray::_InputArray(class cv::Mat const &)" (??0_InputArray@cv@@QAE@ABVMat@1@@Z)
1>HelloOpenCV.obj : error LNK2001: unresolved external symbol "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z)
1>HelloOpenCV.obj : error LNK2001: unresolved external symbol "class cv::Mat __cdecl cv::imread(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?imread@cv@@YA?AVMat@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z)
1>HelloOpenCV.obj : error LNK2001: unresolved external symbol "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ)
1>HelloOpenCV.obj : error LNK2001: unresolved external symbol "bool __cdecl cv::imwrite(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::_InputArray const &,class std::vector<int,class std::allocator<int> > const &)" (?imwrite@cv@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV_InputArray@1@ABV?$vector@HV?$allocator@H@std@@@3@@Z)

2 个答案:

答案 0 :(得分:4)

我正在为您提供不需要管理员权限的详细设置说明。避免在C盘中做事。

1)启动VS2010并选择“新项目......”。

2)选择“清空项目”,输入名称,选择放置项目的位置。按“确定”。

3)现在我们从头开始创建了一个项目。是时候链接库并使我们的项目使用OpenCV。 单击下面的选项卡切换到Property Manager。如果找不到该选项卡,则可以从菜单View中访问Property manager。

4)默认属性适用于32位系统(注意Win32后缀),因为您使用的是64位系统,从现在开始,我将描述64位系统的配置。 如果您的x64已经是x64,或者您想使用32位开发,请退一步。 从“Build”菜单中,选择“Configuration Manager”。在“Active solution platform”下,默认情况下应选择Win32。单击它并选择“新建...”。 选择“x64”作为新平台,然后选择Win32以复制设置。确保选中“创建新项目平台”。

5)INCLUDE 在“共同属性”下 - &gt; “C / C ++” - &gt; “常规”,编辑“其他包含目录”并添加浏览此路径以添加“.. \ OpenCV \ build \ include”。选择“build”文件夹下的“include”文件夹,而不是任何其他“include”文件夹,这一点很重要。

6)LINK LIB 在“共同属性”下 - &gt; “链接器” - &gt; “常规”,编辑“其他库目录”并添加“.. \ OpenCV \ build \ x64 \ vc9 \ lib”。这里“x64”代表64位系统,如果你使用32位将其更改为x86。 “vc9”代表Visual C ++ 2008,假设您使用的是VS2008,请将vc10用于Visual Studio 2010。

7)LIB INPUT 在“共同属性”下 - &gt; “链接器” - &gt; “输入”,编辑“附加依赖项”并添加以下lib文件:

[适用于调试]

opencv_core242d.lib

opencv_highgui242d.lib

opencv_imgproc242d.lib

[发布]

opencv_core242.lib

opencv_highgui242.lib

opencv_imgproc242.lib

这里,命名如下:LibName_Version_Debug.lib即opencv_imgproc242d.lib是opencv_imgproc是库名,242是opencv版本, d 最后表示调试库,如果你没有使用调试模式,请不要带有“d”的库使用。 我添加了非常基本的库,您可能需要根据您的代码添加更多。

8)除了链接库文件名之外,“Release”配置的步骤相同。你只需要在点之前摆脱“d”字母。

您的代码应该没有任何投诉。但是在运行时,您应该收到有关缺少dll 的错误。

9)DLL 在项目文件夹中找到exe / output,它的名称应该是根据你的开发模式发布/调试的,它应该有一个输出的exe文件。从“.. \ OpenCV \ build \ x64 \ vc9 \ bin”(对于x64)或“.. \ OpenCV \ build \ x64 \ vc9 \ bin”复制dll文件(如果使用调试模式则以字母“d”结尾) (对于32位)和该文件夹。

答案 1 :(得分:0)

在opencv300中,需要imc()/ imwrite()的opencv_imgcodecs300.lib。