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

            elva

            在 Visual C++ 中以錯(cuò)誤的順序鏈接 CRT 庫和 MFC 庫時(shí)出現(xiàn) LNK2005 錯(cuò)誤解決方案

            癥狀

            當(dāng) C 運(yùn)行時(shí) (CRT) 庫和 Microsoft 基礎(chǔ)類 (MFC) 庫的鏈接順序有誤時(shí),可能會(huì)出現(xiàn)以下 LNK2005 錯(cuò)誤之一:
            nafxcwd.lib(afxmem.obj) :error LNK2005:
            "void * __cdecl operator new(unsigned int)"(??2@YAPAXI@Z) already
            defined in LIBCMTD.lib(new.obj)
            nafxcwd.lib(afxmem.obj) :error LNK2005:
            "void __cdecl operator delete(void *)"(??3@YAXPAX@Z) already defined
            in LIBCMTD.lib(dbgnew.obj)
            nafxcwd.lib(afxmem.obj) :error LNK2005:
            "void * __cdecl operator new(unsigned int,int,char const *,int)"
            (??2@YAPAXIHPBDH@Z) already defined in LIBCMTD.lib(dbgnew.obj)
            mfcs40d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
            MSVCRTD.LIB (dllmain.obj)
            mfcs42d.lib(dllmodul.obj):error LNK2005:_DllMain@12 already defined in
            msvcrtd.lib(dllmain.obj)

            原因

            CRT 庫對(duì) newdeleteDllMain 函數(shù)使用弱外部鏈接。MFC 庫也包含 newdeleteDllMain 函數(shù)。這些函數(shù)要求先鏈接 MFC 庫,然后再鏈接 CRT 庫。

            解決方案

            該問題有兩種解決方法。第一種方法是強(qiáng)制鏈接器按照正確的順序鏈接庫。第二種方法是由您親自查找導(dǎo)致問題的模塊并糾正它。

            注意:下列步驟基于 Visual C++ 6.0 進(jìn)行。

            解決方案一:強(qiáng)制鏈接器按照正確的順序鏈接庫

            1. 在“項(xiàng)目”菜單上,單擊“設(shè)置”。
            2. 在“項(xiàng)目設(shè)置”對(duì)話框的“以下項(xiàng)目的設(shè)置”視圖中,單擊以選中出現(xiàn)鏈接錯(cuò)誤的項(xiàng)目配置。
            3. 在“鏈接”選項(xiàng)卡上,單擊以選中“類別”組合框中的“輸入”。
            4. 在“忽略庫”框中,插入庫名(例如,Nafxcwd.lib;Libcmtd.lib)。

            注意:等效的鏈接器命令行是:/NOD:<library name>
            5. 在“對(duì)象/庫模塊”框中,插入庫名。必須確保這些庫按順序列出,而且是行中的前兩個(gè)庫(例如,Nafxcwd.lib 和 Libcmtd.lib)。
            要在 Visual C++ .NET 中設(shè)置該選項(xiàng),請(qǐng)閱讀“設(shè)置 Visual C++ 項(xiàng)目屬性”聯(lián)機(jī)幫助主題。

            解決方案二:找到并糾正出現(xiàn)問題的模塊

            要查看當(dāng)前的庫鏈接順序,請(qǐng)按照下列步驟操作:
            1. 在“項(xiàng)目”菜單上,單擊“設(shè)置”。
            2. 在“項(xiàng)目設(shè)置”對(duì)話框的“以下項(xiàng)目的設(shè)置”視圖中,單擊以選中出現(xiàn)鏈接錯(cuò)誤的項(xiàng)目配置。
            3. 在“鏈接”選項(xiàng)卡上的“項(xiàng)目選項(xiàng)”框中鍵入 /verbose:lib
            4. 重新生成項(xiàng)目。在鏈接過程中,這些庫將在輸出窗口中列出。

            狀態(tài)

            這種現(xiàn)象是設(shè)計(jì)導(dǎo)致的。

            更多信息

            使用 MFC 庫時(shí),務(wù)必先鏈接它們,然后再鏈接 CRT 庫。這可以通過確保項(xiàng)目中的每個(gè)文件都首先包含 MsdevMfcIncludeAfx.h 來完成。直接包含 (#include <Afx.h>) 或間接包含 (#include <Stdafx.h>) 都可以。Afx.h 包含文件會(huì)通過使用 #pragma comment (lib,"<libname>") 指令來強(qiáng)制采用庫的正確順序。

            如果源文件的擴(kuò)展名為 .c,或者該文件的擴(kuò)展名為 .cpp 但不使用 MFC,則可以創(chuàng)建一個(gè)較小的頭文件 (Forcelib.h) 并將其放在模塊的頂端。這個(gè)新的頭文件可確保按照正確的順序搜索庫。

            Visual C++ 不包含該頭文件。要?jiǎng)?chuàng)建此文件,請(qǐng)按照下列步驟操作:
            1. 打開 MsdevMfcIncludeAfx.h。
            2. 選定 #ifndef _AFX_NOFORCE_LIBS 和 #endif //!_AFX_NOFORCE_LIBS 之間的行。
            3. 將選定部分復(fù)制到 Windows 剪貼板。
            4. 創(chuàng)建一個(gè)新文本文件。
            5. 將剪貼板的內(nèi)容粘貼到這個(gè)新文件中。
            6. 將該文件另存為 MsdevMfcIncludeForcelib.h。
            以上內(nèi)容轉(zhuǎn)字msdn

            posted on 2007-08-17 18:07 葉子 閱讀(410) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C\C++

            成人国内精品久久久久一区| 热99RE久久精品这里都是精品免费 | 久久久久久国产a免费观看不卡| 999久久久免费国产精品播放| 久久久受www免费人成| 午夜天堂av天堂久久久| 青青国产成人久久91网| 天堂无码久久综合东京热| 丰满少妇人妻久久久久久| 久久久人妻精品无码一区 | 久久亚洲AV无码精品色午夜麻豆 | 青青草国产97免久久费观看| 亚洲级αV无码毛片久久精品| 91久久精品91久久性色| 久久久久亚洲av综合波多野结衣| 精品永久久福利一区二区| 日韩AV毛片精品久久久| 国产精品久久久久久久久| 久久精品国产亚洲AV蜜臀色欲| 亚洲狠狠综合久久| 无码人妻精品一区二区三区久久久 | 国产韩国精品一区二区三区久久| 久久精品国产清自在天天线| 久久久久久夜精品精品免费啦| 亚洲伊人久久成综合人影院 | 伊人久久大香线蕉影院95| 久久午夜无码鲁丝片秋霞| 国内精品伊人久久久久影院对白| 91精品国产91久久综合| 色欲综合久久中文字幕网| 久久精品久久久久观看99水蜜桃| 无码国内精品久久人妻麻豆按摩| 嫩草影院久久国产精品| 精品久久777| 亚洲午夜精品久久久久久人妖| 久久精品国产亚洲av影院| 久久99精品久久久久久久久久| 日产精品久久久一区二区| 伊人久久大香线蕉AV色婷婷色| 中文字幕亚洲综合久久菠萝蜜| 国产精品成人久久久|