• <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>

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

            Blog @ Blog

            當華美的葉片落盡,生命的脈絡才歷歷可見。 -- 聶魯達

            常用鏈接

            統計

            積分與排名

            BBS

            Blog

            Web

            最新評論

            error LNK2001: unresolved external symbol _main解決辦法

            解決外部符號錯誤:_main,_WinMain@16,__beginthreadex -!t'my`yK  
            在創建MFC項目時, 不使用MFC AppWizard向導, 如果沒有柚煤孟钅坎問? 就會在編譯時產生很多連接錯誤, 如error LNK2001錯誤, 典型的錯誤提示有: 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子系統設置錯誤, 提示: )WA5FzPLw  
            libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main *+oJ(e  
            4f{'{1]\  
            Windows項目要使用Windows子系統, 而不是Console, 可以這樣設置: *^'y#/Dg  
            z !DF-%3|  
            [Project] --> [Settings] --> 選擇"Link"屬性頁,  Qo!  
            在Project Options中將/subsystem:console改成/subsystem:windows   T`H.k"Y{  
            Xn?{t*{  
            2. Console子系統設置錯誤, 提示: vwK 7b0M  
            LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 4Y~E`L0,  
            8%P ><"  
            控制臺項目要使用Console子系統, 而不是Windows, 設置: *Cl5Y':|h  
            sipSn4_  
            [Project] --> [Settings] --> 選擇"Link"屬性頁, WveN']q\  
            在Project Options中將/subsystem:windows改成/subsystem:console BR4C@Z  
            1 vBkC&  
            3. 程序入口設置錯誤, 提示: dy2$&$=  
            msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 sP.>uExt  
            G- (k~1q  
            通常, MFC項目的程序入口函數是WinMain, 如果編譯項目的Unicode版本, 程序入口必須改為wWinMainCRTStartup, 所以需要重新設置程序入口: 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. 線程運行時庫設置錯誤, 提示: 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-  
            這是因為MFC要使用多線程時庫, 需要更改設置: 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                單線程靜態鏈接庫(release版本) Kh4w Q   
            Multithreaded                  多線程靜態鏈接庫(release版本) |F]g[En 4  
            multithreaded DLL              多線程動態鏈接庫(release版本) s-'qYgA6p  
            Debug Single-Threaded          單線程靜態鏈接庫(debug版本) _ 7w_./y  
            Debug Multithreaded            多線程靜態鏈接庫(debug版本) <[ ePw  
            Debug Multithreaded DLL        多線程動態鏈接庫(debug版本) H8V/O9|(  
            9^x@/  
            單線程: 不需要多線程調用時, 多用在DOS環境下 /PJ|d5  
            多線程: 可以并發運行 clUdag,C  
            靜態庫: 直接將庫與程序Link, 可以脫離MFC庫運行 X]pEmHl  
            動態庫: 需要相應的DLL動態庫, 程序才能運行 \n{&_:b+q  
            release版本: 正式發布時使用 9J;ZZ/3  
            debug版本: 調試階段使用   k9PoFC#k  

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

            評論

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

            現象:
            當你編譯一個ATL工程的Release版時,你得到了下面這個鏈接錯誤:

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

            如下圖所示:


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




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




            背景知識:
            1:

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

            _ATL_MIN_CRT 服務器不鏈接標準的C/C++運行庫

            _ATL_DLL 服務器動態鏈接工具函數庫atl.dll

            _ATL_STATIC_REGISTRY 服務器靜態鏈接對組件注冊的支持

            如果定義了預處理器符號_ATL_MIN_CRT,那么我們的服務器不鏈接C/C++運行庫,并且ATL提供了函數malloc、realloc、new和delete的一個實現。當定義了這個符號時,我們不能調用任何其他的C/C++運行庫的函數。否則,就會受到這樣的待遇:

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

            ATL向導生成的ATL工程為所有的Release版本的編連定義了_ATL_MIN_CRT,但是沒有為Debug版本定義這個符號。

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

            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




            解決方法:


            下面方法中的任何一個都可以糾正這個錯誤:

            Ø 去除_ATL_MIN_CRT這個預處理符號;

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

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


            你將會得到幾個“unresolved external”的錯誤,如下所示。


            這個列表就是你用到的CRT的函數。

            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創建Service (EXE)工程。在這種情況下,它的RelMinDependency版本的配置中就沒有定義_ATL_MIN_CRT符號!這和微軟聲稱的“Service EXE Created with ATL COM AppWizard Doesn't Build in Release Mode”不一樣,可能這是一個已經被FIX了的Bug。





            Written by zhengyun



            參考文獻:

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

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



              回復  更多評論   

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

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

            廣告信息(免費廣告聯系)

            中文版MSDN:
            歡迎體驗

            欧美日韩精品久久久久 | 久久综合中文字幕| 99精品久久精品| 人妻系列无码专区久久五月天| 久久久久久毛片免费看| 少妇精品久久久一区二区三区| 一级做a爰片久久毛片16| 97精品国产97久久久久久免费 | 久久综合五月丁香久久激情| 成人国内精品久久久久影院| 久久精品国产只有精品66| 久久综合九色综合网站| 2021国产精品久久精品| 三级片免费观看久久| 97久久精品无码一区二区天美| 国内精品久久久久影院网站| 国产亚洲婷婷香蕉久久精品| 色婷婷综合久久久久中文| 国产精自产拍久久久久久蜜| 国产99久久久国产精品~~牛 | 国产精品免费久久久久影院| 狠狠精品久久久无码中文字幕| 青青草原1769久久免费播放| 一本久久a久久精品vr综合| 国产一区二区精品久久凹凸 | 久久精品国产精品亚洲下载 | 久久无码人妻一区二区三区 | 久久SE精品一区二区| 亚洲午夜久久久影院伊人| 亚洲国产成人久久综合碰| 亚洲中文久久精品无码| 亚洲综合久久夜AV | 久久久久亚洲精品男人的天堂| 久久综合综合久久狠狠狠97色88| 婷婷综合久久中文字幕蜜桃三电影 | 精品久久久无码21p发布| 亚洲欧洲精品成人久久曰影片 | 99热成人精品热久久669| 日韩精品久久无码人妻中文字幕| 日本WV一本一道久久香蕉| 国产精品久久久香蕉|