unresolved external symbol 無法解析

 

解決 unresolved external symbol 無法解析

解決 unresolved external symbol 無法解析

(1) vc網絡編程中遇到一個編譯問題,原來是少了WSOCK32.LIB。
在 project-->settings-->Link-->Object/Library modules 中加入庫WSOCK32.LIB即可。
在VC中進行WINSOCK的API編程開發的時候,需要在項目中使用下面三個文件,否則會出現編譯錯誤。
  1.WINSOCK.H: 這是WINSOCK API的頭文件,需要包含在項目中。
  2.WSOCK32.LIB: WINSOCK API連接庫文件。在使用中,一定要把它作爲項目的非缺省的連接庫包含到項目文件中去。
  3.WINSOCK.DLL: WINSOCK的動態連接庫,位於WINDOWS的安裝目錄下。
--------------------Configuration: Example1 - Win32 Debug--------------------
Linking...
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
(2) vc數據庫SQL編程中遇到一個問題,原來是少了odbc32.lib。
在 project-->settings-->Link-->Object/Library modules 中加入庫odbc32.lib 即可。
mfc程序調用了odbc api,連接時出錯:
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
(3) vc OpenCV圖像處理編程中遇到一個問題,原來是少了cv.lib cvaux.lib cxcore.lib highgui.lib。
在 project-->settings-->Link-->Object/Library modules 中加入庫cv.lib cvaux.lib cxcore.lib highgui.lib 即可。
error LNK2001: unresolved external symbol _cvReleaseImage
error LNK2001: unresolved external symbol _cvWaitKey
error LNK2001: unresolved external symbol _cvDrawContours
error LNK2001: unresolved external symbol _cvReleaseMemStorage
error LNK2001: unresolved external symbol _cvDestroyWindow
error LNK2001: unresolved external symbol _cvFindContours
error LNK2001: unresolved external symbol _cvCvtColor
error LNK2001: unresolved external symbol _cvCreateImage
error LNK2001: unresolved external symbol _cvGetSize
error LNK2001: unresolved external symbol _cvShowImage
error LNK2001: unresolved external symbol _cvLoadImage
error LNK2001: unresolved external symbol _cvNamedWindow
error LNK2001: unresolved external symbol _cvCreateMemStorage
(4) vc OpenGL三維編程中遇到一個問題,原來是少了OpenGL32.lib GLu32.lib GLaux.lib。
在 project-->settings-->Link-->Object/Library modules 中加入庫OpenGL32.lib GLu32.lib GLaux.lib 即可。
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
error LNK2001: unresolved external symbol
(5) vc VFW視頻採集編程中遇到一個問題,原來是少了VFW32.Lib
在 project-->settings-->Link-->Object/Library modules 中加入庫VFW32.Lib 即可。
error LNK2001: unresolved external symbol
在創建項目時, 不使用MFC AppWizard嚮導, 如果沒有設置好項目參數, 就會在編譯時產生很多連接錯誤, 如error LNK2001錯誤, 典型的錯誤提示有:

libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
錯誤可能引起的原因:
1. Windows子系統設置錯誤, 提示:
libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Windows項目要使用Windows子系統, 而不是Console, 可以這樣設置:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:console改成/subsystem:windows
2. Console子系統設置錯誤, 提示:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol
控制檯項目要使用Console子系統, 而不是Windows, 設置:
[Project] --> [Settings] --> 選擇"Link"屬性頁,
在Project Options中將/subsystem:windows改成/subsystem:console
3. 程序入口設置錯誤, 提示:
msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol
通常, MFC項目的程序入口函數是WinMain, 如果編譯項目的Unicode版本, 程序入口必須改爲wWinMainCRTStartup, 所以需要重新設置程序入口:
[Project] --> [Settings] --> 選擇"C/C++"屬性頁,
在Category中選擇Output,
再在Entry-point symbol中填入wWinMainCRTStartup, 即可
4. 線程運行時庫設置錯誤, 提示:
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex
nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex
這是因爲MFC要使用多線程時庫, 需要更改設置:
[Project] --> [Settings] --> 選擇"C/C++"屬性頁,
在Category中選擇Code Generation,
再在Use run-time library中選擇Debug Multithreaded或者multithreaded
其中,
Single-Threaded 單線程靜態鏈接庫(release版本)
Multithreaded 多線程靜態鏈接庫(release版本)
multithreaded DLL 多線程動態鏈接庫(release版本)
Debug Single-Threaded 單線程靜態鏈接庫(debug版本)
Debug Multithreaded 多線程靜態鏈接庫(debug版本)
Debug Multithreaded DLL 多線程動態鏈接庫(debug版本)
單線程: 不需要多線程調用時, 多用在DOS環境下
多線程: 可以併發運行
靜態庫: 直接將庫與程序Link, 可以脫離MFC庫運行
動態庫: 需要相應的DLL動態庫, 程序才能運行
release版本: 正式發佈時使用
debug版本: 調試階段使用

第二類:程序沒有添加必要的庫。

當copy網上的源程序,在本機編譯的時候,由於新建的工程沒有把連接用的庫,在連接的時候添加進去,所以一些函數、變量找不到定義的庫文件,從而出錯。

texture.obj : error LNK2001: unresolved external symbol
texture.obj : error LNK2001: unresolved external symbol
texture.obj : error LNK2001: unresolved external symbol
texture.obj : error LNK2001: unresolved external symbol
texture.obj : error LNK2001: unresolved external symbol
texture.obj : error LNK2001: unresolved external symbol

解決方法:

1. 先弄清楚到底缺了哪些庫,再在project=》setting=》link裏面的moldul/lib 添加這些庫的文件。

2. 可以用以下形式在源程序裏面添加下面代碼:

#pragma comment(lib, "openGL32.lib");
#pragma comment(lib, "glu32.lib");
#pragma comment(lib, "glaux.lib");

vc編譯報錯 unresolved external symbol 解決辦法

添加Winmm.lib和 頭文件中包含 Mmsystem.h

選擇"project"->"setting"->"link"->"Object/library modules"然後添加"Winmm.lib"就可以了。

轉自http://www.cnblogs.com/me115/archive/2010/11/12/1875747.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章