• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            山寨:不是最好的,是最適合我們的!歡迎體驗(yàn)山寨 中文版MSDN

            Blog @ Blog

            當(dāng)華美的葉片落盡,生命的脈絡(luò)才歷歷可見。 -- 聶魯達(dá)

            常用鏈接

            統(tǒng)計(jì)

            積分與排名

            BBS

            Blog

            Web

            最新評論

            error LNK2001: unresolved external symbol _main解決辦法

            解決外部符號錯(cuò)誤:_main,_WinMain@16,__beginthreadex -!t'my`yK  
            在創(chuàng)建MFC項(xiàng)目時(shí), 不使用MFC AppWizard向?qū)? 如果沒有柚煤孟钅坎問? 就會(huì)在編譯時(shí)產(chǎn)生很多連接錯(cuò)誤, 如error LNK2001錯(cuò)誤, 典型的錯(cuò)誤提示有: m1+4#'  
            libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main (gd){j  
            LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 OuR5T>>  
            msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 *_g+&Us1  
            nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex }t,6 oT  
            nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex <u%N(=9  
            ]wpN"w"  
            1. Windows子系統(tǒng)設(shè)置錯(cuò)誤, 提示: )WA5FzPLw  
            libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main *+oJ(e  
            4f{'{1]\  
            Windows項(xiàng)目要使用Windows子系統(tǒng), 而不是Console, 可以這樣設(shè)置: *^'y#/Dg  
            z !DF-%3|  
            [Project] --> [Settings] --> 選擇"Link"屬性頁,  Qo!  
            在Project Options中將/subsystem:console改成/subsystem:windows   T`H.k"Y{  
            Xn?{t*{  
            2. Console子系統(tǒng)設(shè)置錯(cuò)誤, 提示: vwK 7b0M  
            LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 4Y~E`L0,  
            8%P ><"  
            控制臺(tái)項(xiàng)目要使用Console子系統(tǒng), 而不是Windows, 設(shè)置: *Cl5Y':|h  
            sipSn4_  
            [Project] --> [Settings] --> 選擇"Link"屬性頁, WveN']q\  
            在Project Options中將/subsystem:windows改成/subsystem:console BR4C@Z  
            1 vBkC&  
            3. 程序入口設(shè)置錯(cuò)誤, 提示: dy2$&$=  
            msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 sP.>uExt  
            G- (k~1q  
            通常, MFC項(xiàng)目的程序入口函數(shù)是WinMain, 如果編譯項(xiàng)目的Unicode版本, 程序入口必須改為wWinMainCRTStartup, 所以需要重新設(shè)置程序入口: r#~P5[aV  
            Os hl6 i  
            [Project] --> [Settings] --> 選擇"Link"屬性頁, "1zk_#B*  
            在Category中選擇Output, p HGRL  
            再在Entry-point symbol中填入wWinMainCRTStartup, 即可 >IC}SZ  
            F)c[@\.dm  
            4. 線程運(yùn)行時(shí)庫設(shè)置錯(cuò)誤, 提示: X;t_- f  
            nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex AmiBqZTp  
            nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex sz 23_{c?  
            oz! {Fd-  
            這是因?yàn)镸FC要使用多線程時(shí)庫, 需要更改設(shè)置: L a-Y,1x](  
            uAk>h^pbM  
            [Project] --> [Settings] --> 選擇"C/C++"屬性頁, '%ET|1#SO  
            在Category中選擇Code Generation, ;Y-M)k(  
            再在Use run-time library中選擇Debug Multithreaded或者multithreaded 0v~5<Y'Z  
            咸魚游俠(75374355) 12:11:11 <mW.@e5_  
            其中, W_qa?Jv  
            Single-Threaded                單線程靜態(tài)鏈接庫(release版本) Kh4w Q   
            Multithreaded                  多線程靜態(tài)鏈接庫(release版本) |F]g[En 4  
            multithreaded DLL              多線程動(dòng)態(tài)鏈接庫(release版本) s-'qYgA6p  
            Debug Single-Threaded          單線程靜態(tài)鏈接庫(debug版本) _ 7w_./y  
            Debug Multithreaded            多線程靜態(tài)鏈接庫(debug版本) <[ ePw  
            Debug Multithreaded DLL        多線程動(dòng)態(tài)鏈接庫(debug版本) H8V/O9|(  
            9^x@/  
            單線程: 不需要多線程調(diào)用時(shí), 多用在DOS環(huán)境下 /PJ|d5  
            多線程: 可以并發(fā)運(yùn)行 clUdag,C  
            靜態(tài)庫: 直接將庫與程序Link, 可以脫離MFC庫運(yùn)行 X]pEmHl  
            動(dòng)態(tài)庫: 需要相應(yīng)的DLL動(dòng)態(tài)庫, 程序才能運(yùn)行 \n{&_:b+q  
            release版本: 正式發(fā)布時(shí)使用 9J;ZZ/3  
            debug版本: 調(diào)試階段使用   k9PoFC#k  

            posted on 2008-10-14 22:07 isabc 閱讀(9921) 評論(2)  編輯 收藏 引用 所屬分類: BUG分析

            評論

            # re: error LNK2001: unresolved external symbol _main解決辦法 2008-10-21 21:16 isabc

            現(xiàn)象:
            當(dāng)你編譯一個(gè)ATL工程的Release版時(shí),你得到了下面這個(gè)鏈接錯(cuò)誤:

            LIBCMT.LIB(crt0.obj) : error LNK2001: unresolved external symbol _main

            如下圖所示:


            而Debug版本的編連卻順利通過。




            原因與解決方法:
            出錯(cuò)原因:
            如果你在工程中使用了CRT函數(shù),而這些函數(shù)又需要CRT啟動(dòng)代碼,就會(huì)出現(xiàn)這種鏈接錯(cuò)誤。默認(rèn)情況下,Release配置的Preprocessor definitions中定義了_ATL_MIN_CRT,它將CRT啟動(dòng)代碼從你的EXE或DLL剔出去了。




            背景知識:
            1:

            ATL支持把一個(gè)服務(wù)器編連優(yōu)化成最小尺寸或者依賴性最小。我們可以定義三個(gè)預(yù)處理器符號來影響服務(wù)器的優(yōu)化。

            _ATL_MIN_CRT 服務(wù)器不鏈接標(biāo)準(zhǔn)的C/C++運(yùn)行庫

            _ATL_DLL 服務(wù)器動(dòng)態(tài)鏈接工具函數(shù)庫atl.dll

            _ATL_STATIC_REGISTRY 服務(wù)器靜態(tài)鏈接對組件注冊的支持

            如果定義了預(yù)處理器符號_ATL_MIN_CRT,那么我們的服務(wù)器不鏈接C/C++運(yùn)行庫,并且ATL提供了函數(shù)malloc、realloc、new和delete的一個(gè)實(shí)現(xiàn)。當(dāng)定義了這個(gè)符號時(shí),我們不能調(diào)用任何其他的C/C++運(yùn)行庫的函數(shù)。否則,就會(huì)受到這樣的待遇:

            LIBCMT.LIB(crt0.obj) : error LNK2001: unresolved external symbol _main

            ATL向?qū)傻腁TL工程為所有的Release版本的編連定義了_ATL_MIN_CRT,但是沒有為Debug版本定義這個(gè)符號。

            Debug配置沒有定義這三個(gè)符號中的任何一個(gè)。

            RelMinSize配置定義了_ATL_MIN_CRT和_ATL_DLL。

            RelMinDependency配置定義了_ATL_MIN_CRT和_ATL_STATIC_REGISTRY。



            2:

            C Run-Time Library (without iostream)
            Characteristics
            Option
            Defined

            LIBC.LIB
            a statically linked library for single-threaded programs

            (Single threaded, static link)
            /ML


            LIBCMT.LIB
            a statically linked library that supports multithreaded programs

            (Multithreaded, static link)
            /MT
            _MT

            MSVCRT.LIB
            Multithreaded, dynamic link (import library for MSVCRT.DLL)
            /MD
            _MT, _DLL




            解決方法:


            下面方法中的任何一個(gè)都可以糾正這個(gè)錯(cuò)誤:

            Ø 去除_ATL_MIN_CRT這個(gè)預(yù)處理符號;

            Ø 打開stdafx.cpp,注釋掉#include <atlimpl.cpp>這句話,然后編譯,即可;

            Ø 在工程的配置對話框的Link頁面上,"ignore libraries"編輯框中輸入Libcmt.lib,然后編譯,如下圖所示:


            你將會(huì)得到幾個(gè)“unresolved external”的錯(cuò)誤,如下所示。


            這個(gè)列表就是你用到的CRT的函數(shù)。

            Look for things that you think may be pulling in the startup code and remove them if you can.Instead, use their Win32 equivalents. For example, use lstrcmp() instead of strcmp(). Known functions that require CRT startup code are some of the string and floating point functions.

            其他:
            我的VC IDE是6.0版本和SP5,如果用ATL COM AppWizard創(chuàng)建Service (EXE)工程。在這種情況下,它的RelMinDependency版本的配置中就沒有定義_ATL_MIN_CRT符號!這和微軟聲稱的“Service EXE Created with ATL COM AppWizard Doesn't Build in Release Mode”不一樣,可能這是一個(gè)已經(jīng)被FIX了的Bug。





            Written by zhengyun



            參考文獻(xiàn):

            1. 《INFO: Active Template Library (ATL) 2.0 Readme File [Q165259]》

            2. 《INFO: LNK2001 on CRT Symbols in ATL Release Build [Q165076]》



              回復(fù)  更多評論   

            # re: error LNK2001: unresolved external symbol _main解決辦法 2008-10-21 21:17 isabc

            http://dev.csdn.net/article/12/12676.shtm  回復(fù)  更多評論   

            廣告信息(免費(fèi)廣告聯(lián)系)

            中文版MSDN:
            歡迎體驗(yàn)

            久久婷婷午色综合夜啪| 韩国无遮挡三级久久| 香蕉久久夜色精品国产2020| 日本国产精品久久| 精品久久久中文字幕人妻| 狠狠狠色丁香婷婷综合久久俺| 青青青伊人色综合久久| 伊人情人综合成人久久网小说| 一本色道久久综合亚洲精品| 青青草国产精品久久久久| 久久久久亚洲AV成人网人人网站 | 77777亚洲午夜久久多人| 东京热TOKYO综合久久精品| 久久最新免费视频| 精品国产乱码久久久久久郑州公司 | 久久青青草视频| 国内精品九九久久久精品| 少妇久久久久久被弄到高潮| 99久久无色码中文字幕| 久久强奷乱码老熟女网站| 国内精品久久久久久麻豆| 久久A级毛片免费观看| 久久这里有精品| 久久久久久久久久免免费精品| 亚洲精品乱码久久久久久不卡| www.久久热.com| 777午夜精品久久av蜜臀| 热久久国产欧美一区二区精品| 日本福利片国产午夜久久| 久久综合久久美利坚合众国| 久久综合九色综合久99| 国产精品成人久久久久三级午夜电影| 午夜人妻久久久久久久久| 四虎国产精品成人免费久久| 亚洲Av无码国产情品久久| 91精品国产高清久久久久久国产嫩草 | 亚洲伊人久久大香线蕉综合图片| 69SEX久久精品国产麻豆| 无码人妻久久一区二区三区免费| 久久久受www免费人成| 久久久无码精品亚洲日韩软件|