OPENCV的highgui工程在vc6.0下編譯出錯的解決
【原文:http://www.cnblogs.com/oskycar/archive/2009/08/30/1556924.html】
最近在論壇裡發現有很多人提出如下的問題:
怎麼按照網站上那個安裝方法安裝了,但除錯執行怎麼會出錯啊?
錯誤是:
error C2065: 'GetWindowLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(243) : error C2065: 'GWLP_USERDATA' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(432) : error C2065: 'SetWindowLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(828) : error C2065: 'GetClassLongPtr' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(828) : error C2065: 'GCLP_HBRBACKGROUND' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(972) : error C2065: 'GCLP_HCURSOR' : undeclared identifier
C:\Opencv1.0\OpenCV\otherlibs\highgui\window_w32.cpp(1253) : error C2065: 'GWLP_WNDPROC' : undeclared identifier
一直以來都在用vs.net所以一直沒有這類問題。今天為了在一個低端的本本上安裝vc6.0和opencv讓我費很大的力氣才弄明白。
其實是highgui目錄下的window_w32.cpp巨集定義出現的問題,
#if defined WIN64 || defined EM64T
上面這個巨集判斷其實應該是返回FALSE才對。但是由於6.0的編譯的問題它這裡就程式設計true了,因而執行了下面的巨集定義
#define icvGetWindowLongPtr GetWindowLongPtr
#define icvSetWindowLongPtr( hwnd, id, ptr ) SetWindowLongPtr( hwnd, id, (LONG_PTR)(ptr) )
#define icvGetClassLongPtr GetClassLongPtr
#define CV_USERDATA GWLP_USERDATA
#define CV_WNDPROC GWLP_WNDPROC
#define CV_HCURSOR GCLP_HCURSOR
#define CV_HBRBACKGROUND GCLP_HBRBACKGROUND
GetClassLongPtr這些函式應該不是win32的程式,而是win64的程式,因此才會出錯。
解決方法是把#if defined WIN64 || defined EM64T隨便改成一個系統不認識的,沒有定義過的巨集就
行了。如: 改成#if defined WIN642 || defined EM64T 。或者乾脆註釋調上面的全部內容。
對於opencv1.0 版本改過之後就可以編譯_make裡面的opencv.dsw 裡面的highgui.dsp了。對於
5.0beta版本,可能要先把OpenCV\otherlibs\_graphics\src下面的graphic_libs.dsw編譯後才能編譯
highgui.dsp(呵呵,今天把所以版本都試了一遍)
如果以上編譯全部通過,可能還要配置一下環境變數,如:d:\Program Files\OpenCV\bin; 如果不配
置的話會出現找不到coxcore100.dll等檔案的錯誤。vs.net下就不會有以上的麻煩。
如果又出現類似tiff,png,jpeg等錯誤,則需要編譯opencv的附加庫,目錄在:
C:\Program Files\OpenCV\otherlibs\_graphics\src
相關文章
- 編譯EJB出現錯誤的解決編譯
- OpenCV1.0編譯錯誤解決辦法OpenCV編譯
- xcode 編譯opencv ios容易出現的錯誤XCode編譯OpenCViOS
- CMake生成OpenCV解決方案&&編譯OpenCV原始碼OpenCV編譯原始碼
- Eclipse——編譯已有工程出現“ No rule to make target”的解決方案Eclipse編譯
- WindowsXP/VC6.0下編譯boost1.32.0Windows編譯
- opencv 編譯常見錯誤OpenCV編譯
- JNI命令列下編譯錯誤解決方案命令列編譯
- Win10下Qt+OpenCV+Cmake編譯錯誤Win10QTOpenCV編譯
- 樹莓派編譯OpenCV報錯樹莓派編譯OpenCV
- 解決OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\highgui\src\window.cpp:376: error: (-215:AOpenCVProjectPythonGUIError
- 編譯notepad++的錯誤解決編譯
- 執行無法解決的編譯錯誤編譯
- 下載了jdon的jive,可是編譯出錯呢!!編譯
- Windows下CMake編譯安裝OpenCVWindows編譯OpenCV
- VC6.0編譯問題 (轉)編譯
- kaldi的編譯安裝與報錯解決方法編譯
- 編譯opencv 提示opencv_sfm links to target absl::log but not found解決辦法編譯OpenCV
- Jive工程在JB8中的編譯編譯
- 在impdp匯入報編譯錯誤ORA-39082的解決辦法編譯
- Windows 下 Laravel Mix 資源編譯過程以及產生的錯誤解決WindowsLaravel編譯
- asm內聯語句在編譯不支援的情況下的解決辦法ASM編譯
- WPA Supplicant 在Windows下的編譯Windows編譯
- 在WSL下為OpenWRT交叉編譯出CMake編譯
- Gop - 編譯和管理在GOPATH之外的Go工程Go編譯
- Idea編譯錯誤解決辦法Idea編譯
- PHP編譯錯誤及解決辦法PHP編譯
- isNaN("abc")編譯報錯解決辦法NaN編譯
- QT中文編譯出錯QT編譯
- jni編譯出錯!急!!編譯
- 親密接觸VC6.0編譯器 (轉)編譯
- 大漠編譯的程式 解決方案編譯
- 工程make時出現"時鐘錯誤的問題"的解決方案
- 解決 Angular 官網下載的庫 Schematics 執行 npm run build 時遇到的編譯錯誤AngularNPMUI編譯
- ios交叉比編譯android錯誤解決iOS編譯Android
- 在 Linux 下編譯及除錯 C 程式碼的簡易指南Linux編譯除錯
- 在Windows下編譯WebRTCWindows編譯Web
- 菜鳥調錯(八)—— Maven編譯錯誤:不相容的型別的解決方案Maven編譯型別