青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

yehao's Blog

LNK2005錯誤處理

造成LNK2005錯誤主要有以下幾種情況:

1.重復定義全局變量。可能存在兩種情況:

A、 對于一些初學編程的程序員,有時候會以為需要使用全局變量的地方就可以使用定義申明一下。其實這是錯誤的,全局變量是針對整個工程的。正確的應該是在一個 CPP文件中定義如下:int g_Test;那么在使用的CPP文件中就應該使用:extern int g_Test即可,如果還是使用int g_Test,那么就會產生LNK2005錯誤,一般錯誤錯誤信息類似:AAA.obj error LNK2005 int book c? book@@3HA already defined in BBB.obj。切記的就是不能給變量賦值否則還是會有LNK2005錯誤。

       這里需要的是“聲明”,不是“定義”!根據C++標準的規定,一個變量是聲明,必須同時滿足兩個條件,否則就是定義:

(1)聲明必須使用extern關鍵字;(2)不能給變量賦初值

所以,下面的是聲明:

extern int a;

下面的是定義

int a; int a = 0; extern int a =0;

B、對于那么編程不是那么嚴謹的程序員,總是在需要使用變量的文件中隨意定義一個全局變量,并且對于變量名也不予考慮,這也往往容易造成變量名重復,而造成LNK2005錯誤。

2. 頭文件的包含重復。往往需要包含的頭文件中含有變量、函數、類的定義,在其它使用的地方又不得不多次包含之,如果頭文件中沒有相關的宏等防止重復鏈接的措 施,那么就會產生LNK2005錯誤。解決辦法是在需要包含的頭文件中做類似的處理:#ifndef MY_H_FILE   //如果沒有定義這個宏

#define MY_H_FILE   //定義這個宏

…….   //頭文件主體內容

…….

#endif

上面是使用宏來做的,也可以使用預編譯來做,在頭文件中加入:

#pragma once

//頭文件主體

3. 使用第三方的庫造成的。這種情況主要是C運行期函數庫和MFC的庫沖突造成的。具體的辦法就是將那個提示出錯的庫放到另外一個庫的前面。另外選擇不同的C 函數庫,可能會引起這個錯誤。微軟和C有兩種C運行期函數庫,一種是普通的函數庫:LIBC.LIB,不支持多線程。另外一種是支持多線程的: msvcrt.lib。如果一個工程里,這兩種函數庫混合使用,可能會引起這個錯誤,一般情況下它需要MFC的庫先于C運行期函數庫被鏈接,因此建議使用 支持多線程的msvcrt.lib。所以在使用第三方的庫之前首先要知道它鏈接的是什么庫,否則就可能造成LNK2005錯誤。如果不得不使用第三方的 庫,可以嘗試按下面所說的方法修改,但不能保證一定能解決問題,前兩種方法是微軟提供的:

A、選擇VC菜單Project-> Settings->Link->Catagory選擇Input,再在Ignore libraries 的Edit欄中填入你需要忽略的庫,如:Nafxcwd.lib;Libcmtd.lib。然后在Object/library Modules的Edit欄中填入正確的庫的順序,這里需要你能確定什么是正確的順序,呵呵,God bless you!

B、選擇VC菜單Project->Settings->Link頁,然后在Project Options的Edit欄中輸入/verbose:lib,這樣就可以在編譯鏈接程序過程中在輸出窗口看到鏈接的順序了。

C、選擇VC菜單Project->Settings->C/C++頁,Catagory選擇Code Generation后再在User Runtime libraray中選擇MultiThread DLL等其他庫,逐一嘗試。

這就是我所遇到過的LNK2005錯誤的幾種情況,肯定還有其他的情況也可能造成這種錯誤,所以我不希望你在看完這篇文章以后,再遇到LNK2005錯誤時候,不動腦筋的想對號入座的排除錯誤。編程的過程就是一個思考的過程,所以還是多多開動你的頭腦,那樣收獲會更多!

=======================================

支持,我在社區里也看到了許多LINK 2005錯

補充一點,就是一次在用第三方庫時,由于errno被重定義,用多種方法都不能解決,后查找MSDN,發現link有個選項/FORCE可以解決,在IDE下

Project->Settings->Link頁,選categroy為custom,將force file output前打勾

但會有警告

warning LNK4088: image being generated due to /FORCE option; image may not run

但的確解決了問題,這是由于VC對重定義比較嚴格,像BCB或GCC在庫中的重定義不會有任何警告或錯誤

========================================

我 發現的另外一個出現LINK2005的現象,好像是由于名稱空間而引起的。我在dos下寫的程序沒有問題,但是放在mfc中就出現了這個鏈接錯誤。因為起 初圖省事,我在一個頭文件中寫了using namespace std,并且這個頭文件我多處使用,另外,我還使用了boost庫。后來,問題解決的方法非常奇怪,在一個頭文件中引用其他頭文件,這些頭文件的順序換一 下就通過了,那個出現問題的頭文件中我使用了std::map,當我把這種容器使用模板代替后,鏈接就有沒事了。(例如:template< class coll>),后來感到模板技術還有這種效果,賺了!哈哈

========================================

What are the C and C++ libraries my program would link with?

                      Summary Table

 

Compile   Old             New IOStream   Libraries

Option     IOStream   or STL                Linked With

 

 

/ML        No                No                    LIBC.LIB

 

/MLd      No                No                    LIBCD.LIB

 

/MT        No                No                    LIBCMT.LIB

 

/MTd      No                No                    LIBCMTD.LIB

 

/MD       No                 No                    MSVCRT.LIB

 

/MDd      No                 No                    MSVCRTD.LIB

 

/ML        No                Yes                    LIBC.LIB,    LIBCP.LIB

 

/MLd      No                Yes                    LIBCD.LIB,   LIBCPD.LIB

 

/MT        No                Yes                    LIBCMT.LIB, LIBCPMT.LIB

 

/MTd      No                Yes                    LIBCMTD.LIB, LIBCPMTD.LIB

 

/MD        No                Yes                    MSVCRT.LIB, MSVCPRT.LIB

 

/MDd      No                Yes                    MSVCRTD.LIB, MSVCPRTD.LIB

 

/ML        Yes                No                    LIBC.LIB,       LIBCI.LIB

 

/MLd      Yes                No                    LIBCD.LIB,   LIBCID.LIB

 

/MT        Yes                No                    LIBCMT.LIB,   LIBCIMT.LIB

 

/MTd      Yes                No                    LIBCMTD.LIB, LIBCIMTD.LIB

 

/MD        Yes               No                    MSVCRT.LIB, MSVCIRT.LIB

 

/MDd      Yes               No                    MSVCRTD.LIB, MSVCIRTD.LIB

你的程序使用了/ML編譯選項,而程序依賴的.lib可能使用/MDd選項編譯,造成鏈接沖突.

統一編譯選項可回避此錯誤

Project Settings->C/C++ Tab->Category:CodeGeneration

Use run-time library組合框中選擇Multithread Dll(或Debug Multithread Dll )

Summary Table for CRT DLLs Used

Import Library Linked With DLLs Used (Visual C++ 5.0

從vc6升級到vc7的一些問題及解決方法- -

                                      

最近由于工作需要,把項目從vc6升級到vc7(vc.net2003)。升級過程遇到些問題,記錄于此。

1. 編譯時出現:WINVER not defined. Defaulting to 0×0501 (Windows XP and Windows .NET Server)

這個問題是因為沒有指定工程要使用的平臺SDK的版本。

Minimum system required Macros to define

Windows Server 2003 family _WIN32_WINNT>=0×0502

Windows XP _WIN32_WINNT>=0×0501

Windows 2000 _WIN32_WINNT>=0×0500

Windows NT 4.0 _WIN32_WINNT>=0×0400

Windows Me _WIN32_WINDOWS=0×0490

Windows 98 _WIN32_WINDOWS>=0×0410

Internet Explorer 6.0 _WIN32_IE>=0×0600

Internet Explorer 5.01, 5.5 _WIN32_IE>=0×0501

Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0×0500

Internet Explorer 4.01 _WIN32_IE>=0×0401

Internet Explorer 4.0 _WIN32_IE>=0×0400

Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0×0300

解決辦法:

屬性,C/C++,命令行,附加項中添加 /D_WIN32_WINNT=0×0501 (因為我是在xp下工作的所以是0×0501)

2. Link是出現:LINK : warning LNK4075: 忽略”/EDITANDCONTINUE”(由于”/INCREMENTAL:NO”規范)

這個問題是因為在vc6中,工程使用的增量編譯。

解決辦法:

屬性,鏈接器,常規,啟動增量鏈接 選擇 是(INCREMENTAL)

3. 編譯時出現:warning C4129: “U” : 不可識別的字符轉義序列

error C3847: 通用字符中的錯誤符號;必須使用十六進制數字

原 因:為開發全球通用的應用程序,.NET Framework 使用 Unicode UTF-16(Unicode 轉換格式,16 位編碼形式)來表示字符。在某些情況下,.NET Framework 在內部使用 UTF-8。引入通用字符名稱的格式是 u#### 或 U########。

解決辦法:

//#include MAKEPATH(MAIN_IMAGE_PATH, FunUtilUnit_star.txt)

#include “..ImageDataML128160FunUtilUnit_star.txt”

4. 鏈接是出現:LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit 已經在 MSVCRTD.lib(MSVCR71D.dll) 中定義 等類似錯誤

原因:

Run-Time Library

?Run-Time Library是編譯器提供的標準庫,提供一些基本的庫函數和系統調用。

我們一般使用的Run-Time Library是C Run-Time Libraries。當然也有Standard C++ libraries。

C Run-Time Libraries實現ANSI C的標準庫。VC安裝目錄的CRT目錄有C Run-Time庫的大部分源代碼。 C Run-Time Libraries有靜態庫版本,也有動態鏈接庫版本;有單線程版本,也有多線程版本;還有調試和非調試版本。

?動態鏈接庫版本:

/MD Multithreaded DLL 使用導入庫MSVCRT.LIB

/MDd Debug Multithreaded DLL 使用導入庫MSVCRTD.LIB

?靜態庫版本:

/ML Single-Threaded 使用靜態庫LIBC.LIB

/MLd Debug Single-Threaded 使用靜態庫LIBCD.LIB

/MT Multithreaded 使用靜態庫LIBCMT.LIB

/MTd Debug Multithreaded 使用靜態庫LIBCMTD.LIB

若要使用此運行時庫 請忽略這些庫

單線程 (libc.lib) libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

多線程 (libcmt.lib) libc.lib、msvcrt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

使用 DLL 的多線程 (msvcrt.lib) libc.lib、libcmt.lib、libcd.lib、libcmtd.lib、msvcrtd.lib

調試單線程 (libcd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib

調試多線程 (libcmtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib

使用 DLL 的調試多線程 (msvcrtd.lib) libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib

解決方法:

屬性,鏈接器,輸入,忽略指定庫 libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib (這是我需要忽略的,你可以根據你工程的實際情況選擇。)

posted on 2011-12-14 09:57 厚積薄發 閱讀(482) 評論(0)  編輯 收藏 引用 所屬分類: Windows編程

導航

<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

常用鏈接

留言簿

隨筆分類

文章分類

文章檔案

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品乱码久久久久久黑人| 国产精品进线69影院| 国产一区二区电影在线观看| 国产精品爽黄69| 国产午夜精品久久| 国产午夜精品福利| 亚洲激情欧美| 99精品欧美一区| 欧美高清影院| 亚洲精品五月天| 亚洲一区二区黄色| 一区二区三区高清不卡| 9人人澡人人爽人人精品| 日韩午夜免费视频| 亚洲一区二区三区免费视频| 亚洲欧美日韩国产精品| 久久影视精品| 亚洲另类黄色| 欧美在线在线| 亚洲一区日本| 尤物在线精品| 亚洲一级影院| 欧美国产日韩精品免费观看| 亚洲美女一区| 久久久久久91香蕉国产| 欧美乱人伦中文字幕在线| 国产精品一二三| 亚洲人成啪啪网站| 久久免费99精品久久久久久| 亚洲精品免费一区二区三区| 午夜激情久久久| 欧美精品一区二区三区在线播放| 国产精品视频yy9299一区| 亚洲欧洲一区二区三区| 久久久久久精| 亚洲一级一区| 欧美日本免费| 欧美日韩在线不卡| 91久久精品一区二区三区| 亚洲午夜激情| 欧美激情第五页| 亚洲一区二区在线| 欧美日韩国产成人在线免费 | 久久免费99精品久久久久久| 欧美日韩国产另类不卡| 亚洲高清免费视频| 欧美色一级片| 久久久一二三| 国产一区二区三区四区三区四| 亚洲视频中文| 亚洲免费观看高清完整版在线观看熊| 久久人人看视频| 在线成人激情视频| 久久九九99| 午夜久久黄色| 国产农村妇女精品| 欧美一区二区三区免费视频| 一区二区三区欧美亚洲| 欧美日韩一区高清| 一区二区三区国产精品| 亚洲理论电影网| 欧美日韩在线免费视频| 国产精品av免费在线观看| 在线成人h网| 蜜桃av噜噜一区| 久久久一区二区| 在线看片第一页欧美| 免费不卡视频| 欧美黄色成人网| 老司机67194精品线观看| 激情欧美一区二区三区| 免费久久久一本精品久久区| 久久精品亚洲一区二区| 欧美国产精品v| 亚洲欧美在线网| 国产亚洲精品7777| 老司机午夜精品视频在线观看| 在线观看欧美日本| 在线亚洲一区二区| 亚洲午夜三级在线| 国产亚洲成年网址在线观看| 老色鬼精品视频在线观看播放| 乱码第一页成人| 夜夜嗨av色综合久久久综合网| 亚洲伦理在线免费看| 国产精品一区二区黑丝| 久久综合色婷婷| 欧美精品一区二区久久婷婷| 亚洲女爱视频在线| 欧美一区二区视频在线| 亚洲人体一区| 性久久久久久久久| 一本色道久久综合亚洲精品小说 | 午夜欧美电影在线观看| 性久久久久久久久久久久| 久久综合精品国产一区二区三区| 亚洲片在线观看| 亚洲一区免费观看| 亚洲国产一区二区a毛片| 9色国产精品| 亚洲风情亚aⅴ在线发布| 亚洲在线视频观看| 一区二区高清在线| 久久国产88| 亚洲欧美日韩在线高清直播| 亚洲无线一线二线三线区别av| 久久久www成人免费精品| 欧美日本一区| 猫咪成人在线观看| 国产精品久久久久久亚洲毛片| 欧美日本免费| 老色鬼精品视频在线观看播放| 欧美经典一区二区| 麻豆精品一区二区综合av| 国产精品久久久久久亚洲调教| 欧美韩日一区二区三区| 国产亚洲精品高潮| 亚洲午夜在线| 一本色道久久综合亚洲精品不| 老鸭窝91久久精品色噜噜导演| 欧美亚洲专区| 久久免费视频网| 欧美va亚洲va国产综合| 欧美国产欧美亚洲国产日韩mv天天看完整 | 欧美日韩在线三级| 欧美亚一区二区| 欧美国产在线观看| 好吊视频一区二区三区四区| 在线一区视频| 亚洲一级在线观看| 欧美视频在线观看视频极品| 亚洲激情在线观看视频免费| 一区三区视频| 性做久久久久久久久| 欧美一区二区三区在线看| 国产精品成人免费精品自在线观看| 亚洲人永久免费| 在线观看视频一区| 亚洲电影自拍| 亚洲精品欧美日韩专区| 久久一区二区三区四区五区| 美日韩精品免费观看视频| 影音先锋欧美精品| 久久综合99re88久久爱| 影音先锋日韩有码| 久久综合久久综合久久| 欧美激情一二三区| 亚洲美女网站| 欧美日韩国产成人在线91| 中文高清一区| 久久成人免费日本黄色| 国产主播一区二区三区四区| 久久激情视频久久| 欧美成人一区二区三区片免费| 亚洲国产日日夜夜| 欧美大片一区二区三区| 亚洲精品久久久久久久久久久久 | 亚洲成人资源网| 久热精品视频| 亚洲第一色在线| 欧美日本一区二区三区| 一本久久知道综合久久| 亚洲欧美综合国产精品一区| 国产欧美精品在线播放| 久久综合九色综合欧美就去吻| 亚洲高清视频的网址| 久久成人资源| 男同欧美伦乱| 亚洲美女视频| 国产伦精品一区二区三区免费迷| 欧美一级日韩一级| 欧美成人按摩| 亚洲一区二区毛片| 国产视频一区二区三区在线观看| 久久综合亚州| 夜夜嗨av一区二区三区四季av| 久久久精品tv| 亚洲伦伦在线| 久久婷婷丁香| 欧美激情性爽国产精品17p| 亚洲校园激情| 亚洲经典三级| 久久er精品视频| 91久久亚洲| 欧美日韩精品一区二区三区四区 | 裸体一区二区| 亚洲男人天堂2024| 亚洲国产成人精品久久久国产成人一区| 亚洲免费视频网站| 91久久亚洲| 亚洲电影免费观看高清完整版| 亚洲成人在线视频播放| 国产精品久久久久77777| 欧美高清视频在线观看| 久久精品亚洲热| 午夜精品久久久久| 一本久久知道综合久久| 亚洲精品欧美日韩| 亚洲国产精品久久久久秋霞影院 | 国产精品高清免费在线观看|