error LNK2019:unresolved external symbol *** referenced in function ***的解決方案
今天編譯檔案時遇到下列問題,記錄一下:
error LNK2019:unresolved external symbol *** referenced in function ***
錯誤原因:1)當標頭檔案中宣告瞭一個函式,但是在相應的原始檔中卻沒有對該函式進行定義,則會出現為“解決的外部符號”(unresolved external symbol )錯誤。
2)當一個函式呼叫了外部的一個庫檔案中的函式,但是在當前project的properties中並沒有將所依賴的(dependent)庫檔案包含進來時,也會出現這種錯誤。
3)當編譯的檔案沒有沒加入工程時,也會出現這種錯誤。
綜上,當一個solution在linking時找不到所涉及到的函式的定義時就會出現“unresolved external symbol ”錯誤。
例如,下面是呼叫MIL的庫檔案mil.lib中的函式時,由於沒有將mil.lib包含進來而導致的連結錯誤。
1>Linking...
1>MDispSelect.obj : error LNK2019: unresolved external symbol
_MappFree@4 referenced in function _main
1>MDispSelect.obj : error LNK2019: unresolved external symbol
_MsysFree@4 referenced in function _main
1>MDispSelect.obj : error LNK2019: unresolved external symbol
_MdispFree@4 referenced in function _main
【1,2解決方案】
1. Project -> ** Properties... -> Configuration Properties -> Linker -> Input -> Additional Dependencies -> mil.lib
另外,在此之前,還需新增MIL庫的相應目錄:Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Include files中新增C:\Program Files\Matrox Imaging\Mil\Include 以及 Tools -> Options -> Projects and Solutions -> VC++ Directories -> Show Directories for -> 在Library files中新增C:\Program Files\Matrox Imaging\Mil\LIB。新增目錄的目的是為了使VC在呼叫相應庫檔案時不必總是使用絕對地址,VC可以通過檔名在所包含的目錄中進行搜尋。這樣,前面的mil.lib就不必使用絕對地址了。
【缺點】可移植性差,如果將原工程中的原始檔和標頭檔案中的內容copy下來重新建立該工程時(例如:在電子書或網路上找到的程式),仍需自己在工程中新增目錄及所需的庫檔案。
2. 在程式前加入#pragma comment(lib, "mil.lib")也可以達到相同的效果。
【優點】避免了方案1所出現的問題。
【3解決方案】
將沒有加入的檔案加入到工程,重新編譯。問題得到解決。
相關文章
- 模板例項化函式連結出錯:error LNK2019: unresolved external symbol函式ErrorSymbol
- VC6.0 報錯:error LNK2001: unresolved external symbol _clrscrErrorSymbol
- Visual Studio 2019 使用模板類定義和實現分離時,在主函式中引用標頭檔案編譯報錯 Error LNK2019 unresolved external symbol函式編譯ErrorSymbol
- 解決 Too many symbol filesSymbol
- YII2.0 jQuery(…).activeform is not a function in 終極解決方案jQueryORMFunction
- Server Application Error報錯資訊的解決方案ServerAPPError
- SSL錯誤ssl connect error 35的解決方案Error
- windows redis sentinel listen: Unknown error解決方案WindowsRedisError
- HTTP 錯誤 500.21 - Internal Server Error 解決方案HTTPServerError
- Error format not a string literal and no format arguments解決方案ErrorORM
- nodejs Error: request entity too large解決方案NodeJSError
- psql: symbol lookup error: ./psql: undefined symbol: PQsetErrorContextVisibilitySQLSymbolErrorUndefinedContext
- ORA-00800: soft external errorError
- Symbol詳解Symbol
- QT DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x800c000d ()QTError
- 問題解決local variable 'xxx' referenced before assignment
- sqlplus: error while loading shared libraries的解決方案SQLErrorWhile
- 網站部署後Parser Error Message: Could not load type 的解決方案網站Error
- 解決kotlin與databinding同時使用時 Unresolved reference問題Kotlin
- No grammar constraints (DTD or XML Schema) referenced in the document.的兩種解決辦法AIXML
- Python中的UnboundLocalError: variable referenced before assignment錯誤分析與解決PythonError
- Composer 記憶體不足解決方案 PHP Fatal error: Out of memory記憶體PHPError
- error LNK2019: 無法解析的外部符號 __imp___CrtDbgReportWError符號
- Mac提示app損壞、Error,Mac電腦最常見錯誤的解決方案MacAPPError
- InstallShield安裝時出現“1152:error extracting"的解決方案Error
- 解決 "Script Error" 的另類思路Error
- yarn add cross-env 出現 protocol error, symlink 解決方案YarnROSProtocolError
- eclipse 引入外部js檔案報Syntax error on token 錯解決方案EclipseJSError
- Error: The directory named as part of the path ./log/supervisord.log does not exist解決方案Error
- DBMS_UTILITY.FORMAT_ERROR_BACKTRACE FunctionORMErrorFunction
- error: ‘PATH_MAX’ undeclared (first use in this function)ErrorFunction
- PHP呼叫webservice遇到 Soap WSDL Error - "failed to load external entityPHPWebErrorAI
- 【已解決】Error filter ListenerStartErrorFilter
- 解決方案| anyRTC金融音視訊解決方案
- Linux 動態庫 undefined symbol 原因定位與解決方法LinuxUndefinedSymbol
- 關於解決工程編譯出現Undefined symbol __use_two_region_memory 和Undefined symbol __initial_sp的問題編譯UndefinedSymbol
- ld: 0711-317 ERROR: Undefined symbol: .ha*ErrorUndefinedSymbol
- pyenv docter檢測出configure: error: OpenSSL is not installed.解決方案Error