當前位置:首頁 » 編程軟體 » 編譯來源時出錯

編譯來源時出錯

發布時間: 2025-09-22 05:23:39

A. 編譯錯誤,如何解決error LNK2001: unresolved external symbol

導致「error LNK2001: unresolved external symbol」的原因為getStats此方法的鏈接庫沒有找到。很可能是工程中引用了第三方開源庫或者自己編譯生成的庫,且只用了頭文件,而沒有將對應的lib文件路徑加入到工程中。

具體解決方法為(此方法針對vs系列集成開發環境):

1.如果還未引入頭文件,那麼可以右鍵點擊項目,然後點擊「屬性」。

B. visual c++ 6.0編譯時總有一個錯誤是怎麼回事

實際上這個問題很多情況下是由於路徑設置的問題引起的, 「CL.exe」是VC使用真正的編譯器(編譯程序),其路徑在「VC根目錄VC98Bin」下面, 你可以到相應的路徑下找到這個應用程序。

因此問題可以按照以下方法解決:

方法一:

打開vc界面 點擊VC「TOOLS(工具)」—>「Option(選擇)」 —>「Directories(目錄)」重新設置「Excutable Fils、Include Files、 Library Files、Source Files」的路徑。很多情況可能就一個盤符的不同 (例如你的VC裝在C,但是這些路徑全部在D),改過來就OK了。

如果你是按照初始路徑安裝vc6.0的,路徑應為: executatble files: C:Program FilesMicrosoft Visual StudioCommonMSDev98Bin C:Program FilesMicrosoft Visual StudioVC98BIN C:Program FilesMicrosoft Visual StudioCommonTOOLS C:Program FilesMicrosoft Visual StudioCommonTOOLSWINNT

include files: C:Program FilesMicrosoft Visual StudioVC98INCLUDE C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE

library files: C:Program FilesMicrosoft Visual StudioVC98LIB C:Program FilesMicrosoft Visual StudioVC98MFCLIB

source files: C:Program FilesMicrosoft Visual StudioVC98MFCSRC C:Program FilesMicrosoft Visual StudioVC98MFCINCLUDE C:Program FilesMicrosoft Visual StudioVC98ATLINCLUDE C:Program FilesMicrosoft Visual StudioVC98CRTSRC

如果你裝在其他盤里,則仿照其路徑變通就行(我就是裝在D[來源:GameRes.com]盤)。 關鍵是microsoft visual studio 後面的東西要相同。 主義大小寫。

方法二:(這種較簡單)

最簡便的方法: 啟動VC時不要用圖形界面,通過在命令提示符下輸入:Msdev /useenv運行(注意啦/前面有個空格).它會強制使系統環境變數全高設置成正確值.而且,只需要使用一次這樣的方式運行VC,以後再次通過雙擊圖標的方式啟動也不會有問題.

第3種方法就是設置了一下路徑:D:Program FilesMicrosoft Visual Studio 8VCin(因為我裝的是2005,所以。。。)

追問:

都試過了,不行。。。

追答:

執行VC98BIN下的VCVARS32.BAT,設置環境變數

還不行的話 直接下載這個

http://www.xdowns.com/soft/38/121/2008/Soft_44195.html

C. 編譯C++的源碼時遇到問題:error:『B』does not name a type.

XXX應該是一種用戶定義的數據類型,而由於沒有聲明或者拼寫錯誤或者與關鍵詞重名,導致編譯有錯,出現類型錯誤。

在一個源文件中,要聲明或定義一個類的指針時,必須在使用前聲明或定義該類,因此下面的代碼會報錯:class A{public: B *b;};class B{public: A *a;};int main(){ return 0;}12345678910111213141516

報錯為「error: 『B』 does not name a type」,就是因為在A類中使用B *b之前沒有聲明或定義B類,如果在第一行加上一句前置聲明(forward declaration)「class B;」,就不會有這樣的問題了。

而在頭文件互相包含時,也會引發「error: 『xxx』 does not name a type」,其報錯原因和上面的代碼是相同的,請看下面的代碼:a.h:

#ifndef A_H_INCLUDED#define A_H_INCLUDED#include "b.h"class A{public: B *b;};#endif // A_H_INCLUDED123456789101112

b.h:#ifndef B_H_INCLUDED#define B_H_INCLUDED#include "a.h"class B{public: A *a;};#endif // B_H_INCLUDED123456789101112

main.cpp:#include "a.h"#include "b.h"int main(){ return 0;}1234567

編譯就會報錯:「error: 『A』 does not name a type」。

預處理命令為「gcc -E -o a.i a.h」:

# 1 "a.h"# 1 "<built-in>"# 1 "<command-line>"# 1 "a.h"# 1 "b.h" 1# 1 "a.h" 1# 5,"b.h" 2class B{public: A *a;};

# 5 "a.h" 2class A{public: B *b;};。

(3)編譯來源時出錯擴展閱讀:

C++語言中定義了豐富的運算符,如算術運算符、關系運算符、邏輯運算符等等,有些運算符需要兩個操作數,使用形式為

<操作數1>運算符<操作數2>

這樣的運算符稱為二元運算符(或二目運算符)。另一些運算符只需要一個操作數,稱為一元運算符(或單目運算符)。

運算符具有優先順序與結合性。當一個表達式包含多個運算符時,先進行優先順序高的運算,再進行優先順序低的運算。如果表達式中出現了多個相同優先順序的運算,運算順序就要看運算符的結合性了。所謂結合性,是指當一個操作數左右兩邊的運算符優先順序相同時,按什麼樣的順序進行運算,是自左向右,還是自右向左。

例如,我們熟悉的算術表達式6+5-2中,「+」、 「-」是同級運算符,那麼是先算5-2,還是先算6+5?這就取決於算術運算符的結合性。由於算術運算符的結合性為自左向右,所以應先算6+5,然後再算11-2。

熱點內容
流加密晶元 發布:2025-09-22 07:16:42 瀏覽:451
壓縮脂渣 發布:2025-09-22 07:11:47 瀏覽:440
bbl壓縮 發布:2025-09-22 07:00:10 瀏覽:596
微信銀行密碼怎麼改密碼忘了怎麼辦 發布:2025-09-22 06:59:36 瀏覽:174
javadivide 發布:2025-09-22 06:59:27 瀏覽:418
壓縮內核 發布:2025-09-22 06:46:09 瀏覽:574
箍箍加密長度 發布:2025-09-22 06:28:37 瀏覽:747
python緩存清理 發布:2025-09-22 06:28:35 瀏覽:567
安卓手機相機怎麼帶logo 發布:2025-09-22 06:26:26 瀏覽:908
開源crmphp 發布:2025-09-22 06:07:23 瀏覽:161