2011-10-07 106 views
1

我是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。 –

回答

0

基本上看來,編譯器無法找到OpenCV庫或無法識別正確的。

請確保在庫目錄(C:\opencv\build\x86\vc10\lib等)中指定的目錄中找到需要的庫(即opencv__xxx.lib)。另外,您應該只爲您的平臺指定目錄,即只有vc9(因爲您使用VS2008)和x86/x64取決於你的架構。

PRJ0018警告表示OPENCV_DIR環境變量未設置。你可以在系統屬性對話框中做到這一點(通常你可以通過右鍵單擊「我的電腦」並在Win7/Vista中選擇「屬性」,你必須進入「擴展系統設置」) ,有一個按鈕「環境變量」。但是,如果您已經修改了包含目錄,則可以省略「其他包含目錄」設置。

1

看起來你的處理器首先不能識別出用戶的帳號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" 

好運

小號