簡體   English   中英

如何使用opencv和vs2012擺脫LNK2019未解決的外部符號錯誤

[英]How to get rid of LNK2019 unresolved external symbol errors with opencv and vs2012

我是一個視覺基礎程序員,試圖啟動視覺c ++並使用我發現的一些使用OpenCV的源代碼運行。 我對C ++完全沒有經驗。 我遇到了無法解決的外部符號錯誤,並且花了數小時閱讀我可以在此處找到的每篇文章,並且每個答案都是……“不要將x86與x64庫鏈接在一起,反之亦然”或“添加x引用“首選項->鏈接器”或“將您的lib / dll文件添加到項目文件夾,然后將它們添加到您的解決方案中”或“顯然您沒有將庫添加到鏈接器”。

我已經完成以下所有操作,但沒有效果...

1)我在“項目”->“首選項”->“鏈接器”->“常規”中,將“ c:\\ opencv \\ build \\ x64 \\ vc11 \\ staticlib;%(AdditionalLibraryDirectories)”添加到我的“其他庫目錄”中。 沒有幫助。

2)我嘗試使用x86目錄執行上述操作,但沒有幫助。 因此,有關x64 / x86問題的理論似乎無法解決。

3)我添加了``opencv_calib3d244d.lib; opencv_contrib244d.lib; opencv_core244d.lib; opencv_features2d244d.lib; opencv_flann244d.lib; opencv_gpu244d.lib; opencv_haartraining_engined.lib; opencv_lib_244; vc_lib_244; vc_lib_lib; opencv_lib_244; vc_lib_lib; opencv_lib_244; .lib; opencv_objdetect244d.lib; opencv_photo244d.lib; opencv_stitching244d.lib; opencv_ts244d.lib; opencv_video244d.lib; opencv_videostab244d.lib;%(AdditionalDependencies)“添加到我的Project-> Preferences-> Linker-> Input,用於調試。 沒有幫助。

4)我嘗試使用“ lib”目錄而不是“ staticlib”目錄進行上述操作。 沒有幫助。

5)我嘗試將所有* .lib文件的調試版本從lib目錄復制到我的項目文件夾中,然后使用Project-> Add-> Existing Item將它們添加到我的項目中。 沒有幫助。

6)我在項目->首選項-> C / C ++->常規->其他包含目錄中添加了“ c:\\ opencv \\ build \\ include;%(AdditionalIncludeDirectories)”。 沒有幫助。

這些東西似乎都不是。 有誰知道不涉及我已經嘗試過的任何這些錯誤的解決方案?

這是我遇到的一些錯誤:

錯誤16錯誤LNK2019:函數“ struct _IplImage * __cdecl loadFloatImage(char const *)”中引用的未解析的外部符號_cvCreateImage(?loadFloatImage @@ YAPAU_IplImage @@ PBD @ Z)C:\\ dev \\ CPP_console \\ CPP_console \\ FeaturesMain.obj CPP 17錯誤LNK2001:無法解析的外部符號_cvCreateImage C:\\ dev \\ CPP_console \\ CPP_console \\ TextDetection.obj CPP_console錯誤18錯誤LNK2019:無法解析的外部符號_cvReleaseImage在函數“ struct _IplImage * __cdecl loadFloatImage(char const *)”(? YAPAU_IplImage @@ PBD @ Z)C:\\ dev \\ CPP_console \\ CPP_console \\ FeaturesMain.obj CPP_console

我找到了解決方案。 VS2012出現了故障。 以為我的項目設置為x64,因為當我單擊Build-> Configuration Manager-> Platform時,平台上除了“ Win32”和“ Edit”外沒有其他選項。 當我單擊“編輯”時,它表示平台是x64,但是它已經從“ Win32”復制了設置。 在VS2012中,這似乎是一個小故障。 事實是,即使我單擊“編輯”按鈕,也沒有編輯當前平台。 相反,它正在創建一個新平台。 但是,因為我單擊了“編輯”按鈕,所以我認為這是在告訴我我的平台是x64,因為這就是它所選擇的。 但是,不,它正在創建一個新平台……並且它真的不應該說該項目可能是x64,而是從Win32復制設置! 無論如何,VS2012中似乎存在多個故障。 因此,要解決我的問題,我必須單擊“編輯”鏈接,並告訴它從“”而不是從Win32復制設置(空白是唯一的其他選項)。 這創建了一個名為x64的新平台選項,並將其更改為顯示我的平台現在為x64。 此外,這樣做神奇地使名為“ new”的按鈕出現在平台下拉菜單中的“ edit”按鈕旁邊,並且“ edit”按鈕不再像新按鈕一樣工作(不再提供“復制”選項_ _“中的設置。但是” new“按鈕仍然允許您創建x64平台,但是從Win32復制設置,這是愚蠢的。但是至少現在,當我單擊Edit時,它實際上更像是一個Edit按鈕。 VS2012在此菜單區域中存在錯誤。無論如何,當我將其完全更改為x64時,所有鏈接錯誤都消失了,因為我使用的是x64版本的OpenCV。如果其他人正在使用x64版本的OpenCV:請確保您的“平台”表示x64,而不是Win32,否則會出現LNK錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM