vc6 下常見鏈接錯誤解決方法

在創建MFC項目時,不使用MFCAppWizard嚮導,如果沒有設置好項目參數,就會在編譯時產生很多連接錯誤,如errorLNK2001錯誤,典型的錯誤提示有:
libcmtd.lib(crt0.obj):errorLNK2001:unresolvedexternalsymbol_main
LIBCD.lib(wincrt0.obj):errorLNK2001:unresolvedexternalsymbol_WinMain@16
msvcrtd.lib(crtexew.obj):errorLNK2001:unresolvedexternalsymbol_WinMain@16
nafxcwd.lib(thrdcore.obj):errorLNK2001:unresolvedexternalsymbol__beginthreadex
nafxcwd.lib(thrdcore.obj):errorLNK2001:unresolvedexternalsymbol__endthreadex
下面介紹解決的方法:
1.Windows子系統設置錯誤,提示:
libcmtd.lib(crt0.obj):errorLNK2001:unresolvedexternalsymbol_main
Windows項目要使用Windows子系統,而不是Console,可以這樣設置:
[Project]-->[Settings]-->選擇"Link"屬性頁,
在ProjectOptions中將/subsystem:console改成/subsystem:windows
2.Console子系統設置錯誤,提示:
LIBCD.lib(wincrt0.obj):errorLNK2001:unresolvedexternalsymbol_WinMain@16
控制檯項目要使用Console子系統,而不是Windows,設置:
[Project]-->[Settings]-->選擇"Link"屬性頁,
在ProjectOptions中將/subsystem:windows改成/subsystem:console
3.程序入口設置錯誤,提示:
msvcrtd.lib(crtexew.obj):errorLNK2001:unresolvedexternalsymbol_WinMain@16
通常,MFC項目的程序入口函數是WinMain,如果編譯項目的Unicode版本,程序入口必須改爲wWinMainCRTStartup,所以需要重新設置程序入口:
[Project]-->[Settings]-->選擇"C/C++"屬性頁,
在Category中選擇Output,
再在Entry-pointsymbol中填入wWinMainCRTStartup,即可
4.線程運行時庫設置錯誤,提示:
nafxcwd.lib(thrdcore.obj):errorLNK2001:unresolvedexternalsymbol__beginthreadex
nafxcwd.lib(thrdcore.obj):errorLNK2001:unresolvedexternalsymbol__endthreadex
這是因爲MFC要使用多線程時庫,需要更改設置:
[Project]-->[Settings]-->選擇"C/C++"屬性頁,
在Category中選擇CodeGeneration,
再在Userun-timelibrary中選擇DebugMultithreaded或者multithreaded
其中,
Single-Threaded單線程靜態鏈接庫(release版本)
Multithreaded多線程靜態鏈接庫(release版本)
multithreadedDLL多線程動態鏈接庫(release版本)
DebugSingle-Threaded單線程靜態鏈接庫(debug版本)
DebugMultithreaded多線程靜態鏈接庫(debug版本)
DebugMultithreadedDLL多線程動態鏈接庫(debug版本)
單線程:不需要多線程調用時,多用在DOS環境下
多線程:可以併發運行
靜態庫:直接將庫與程序Link,可以脫離MFC庫運行
動態庫:需要相應的DLL動態庫,程序才能運行
release版本:正式發佈時使用
debug版本:調試階段使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章