我如何解决链接错误我的Visual C++ 2008与OpenCV?

我如何解决链接错误我的Visual C++ 2008与OpenCV?

问题描述:

我是OpenCV的非常重要人物。我如何解决链接错误我的Visual C++ 2008与OpenCV?

我刚刚安装了OpenCV并使C++程序如下。

我的编译器是VISUAL C++ 2008

# include "highgui.h" 
void main() { 
    IplImage* img = cvLoadImage("C:/OpenCV/samples/cpp/tutorial_code/images/lena.png",-1); 
    cvNamedWindow("lena",0); 
    cvShowImage("lena",image); 
    cvWaitKey(0); 
    cvReleaseImage(&image); 
} 

但它无法与错误信息来构建的,我解决不了这个问题。

错误消息如下。

(我的编译器是韩文版,我的错误信息翻译成英文。 和英文很差,但你可以理解它是如何处理的。)

1>------ begin build: project: image1st,: Debug Win32 ------ 
1> compiling) 
1>image1st.cpp 
1>c:\vs2008\ccp_file\image1st\image1st.cpp(17) : warning C4700: not inetialized ‘image’ use local variable 
1>Microsoft (R) Windows (R) Resource Compiler Version 6.1.6723.1 
1>Copyright (C) Microsoft Corporation. All rights reserved. 
1>linking 
1>image1st.obj : error LNK2019: _cvReleaseImage External Symbol(refrence positon: _main function) not defined. 
1> image1st.obj : error LNK2019: _cvWaitKey External Symbol(refrence positon: _main function)not defined. 
1> image1st.obj : error LNK2019: _cvShowImage External Symbol(refrence positon: _main function)not defined.) 
1> image1st.obj : error LNK2019: _cvNamedWindow External Symbol(refrence positon: _main function)not defined.) 
1>image1st.obj : error LNK2019: _cvLoadImage External Symbol(refrence positon: _main function)not defined.) 
1>project: warning PRJ0018 : can not find the next environment variable. 
1>$(OPENCV_DIR) 
1>image1st – errors: 6, warning: 1 

我修改了Visual C++环境如下修改。

我输入“$(OPENCV_DIR)\包括”中的“附加包含目录”条目,

,使“附加依赖”条目包括下一个的.lib文件OpenCV的教程 2.3版指南。

  • 'opencv_core231d.lib'
  • 'opencv__imgproc231d.lib'
  • 'opencv__highgui231d.lib'
  • 'opencv__ml231d.lib'
  • 'opencv__video231d.lib'
  • “opencv__features2d231d.lib '
  • 'opencv__calib3d231d.lib'
  • 'opencv__objdetect231 d.lib”
  • ‘opencv__contrib231d.lib’
  • ‘opencv__legacy231d.lib’
  • ‘opencv__flann231d.lib’

而且包括和Visual C++环境的库目录被修改如下。

对于库:

  • $(VSInstallDir)LIB
  • $(VSInstallDir)
  • $(FrameworkSDKDir)LIB
  • $(WindowsSdkDir)\ LIB
  • $(VCInstallDir)atlmfc \ lib \ i386
  • $(VCInstallDir)atlmfc \ lib
  • $(VCInstallDir)lib
  • C:\的OpenCV \建立\ 86 \ VC10 \ lib中//改性
  • C:\的OpenCV \建立\ 86 \ VC9 \ lib中//改性
  • C:\的OpenCV \建立\ 64 \ VC10 \ LIB //改性
  • C:\的OpenCV \建立\ 64 \ VC9 \ lib中//改性
  • C:\的OpenCV \建立\ GPU \ 86 \ lib中//改性
  • C:\的OpenCV \建立\ GPU \ 64 \ lib中//改性

对于包括:

  • $(VCInstallDir)atlmfc \包括
  • $(WindowsSdkDir)\包括
  • $(FrameworkSDKDir)包括
  • $(VCInstallDir)包括
  • C:\的OpenCV \构建\包括\的OpenCV /的/修改的
  • C:\的OpenCV \构建\包括\ opencv2 //改性
  • C:\的OpenCV \建立\包括//改性
+0

库名称是怪异。寻找名称类似于cvaux的.lib。 –

基本上看来,编译器无法找到OpenCV库或无法识别正确的。

请确保在库目录(C:\opencv\build\x86\vc10\lib等)中指定的目录中找到需要的库(即opencv__xxx.lib)。另外,您应该只为您的平台指定目录,即只有vc9(因为您使用VS2008)和x86/x64取决于你的架构。

PRJ0018警告表示OPENCV_DIR环境变量未设置。你可以在系统属性对话框中做到这一点(通常你可以通过右键单击“我的电脑”并在Win7/Vista中选择“属性”,你必须进入“扩展系统设置”) ,有一个按钮“环境变量”。但是,如果您已经修改了包含目录,则可以省略“其他包含目录”设置。

看起来你的处理器首先不能识别出用户的帐号OPEN_CV ,确保系统\用户帐户是正确的。 为了做到这一点去系统属性 - >在先进的菜单 - >去环境变量 - >确保你的系统变量是正确的,如果不是请创建一个与您的开放CV库位置的路径。

user variables

它好像你是对做的一切, 我相信你的问题是,你已经错过了一些在后生成步骤...

其次,你必须复制dll文件从openCV库转移到项目的位置。 为了做到这一点,请在项目的后期构建步骤中包含适当的路径。 去你的项目:属性:看图片here

,包括命令:

copy "C:\OpenCV2.31\CMake_Build\bin\Debug\*.dll" 
copy "C:\OpenCV2.31\CMake_Build\bin\Debug\*.pdb" 

好运

小号