Re: [問題] GCC的error訊息....

看板Programming作者時間18年前 (2007/02/09 18:32), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《aguai.bbs@ptt.cc (阿怪)》之銘言: > ※ [本文轉錄自 C_and_CPP 看板] > 作者: aguai (阿怪) 看板: C_and_CPP > 標題: [問題] GCC的error訊息.... > 時間: Fri Feb 9 07:19:45 2007 > 常常會出現諸如: > error LNK2019: unresolved external symbol " 否個函式或物件名....." external symbol 就是用於外部連結的 symbol, 寫過 assembly code 的人應該都知道 symbol 跟 label 的區別, 對 C language 來說, external symbol 通常是用來代表非 static global variable/function 的 address, 而它的實際 address 必須在 linking time 才能決定。 當 linker 跟你說 unresolved external symbol, 就是代表它找不到這些 variable/function 的「定義式」, 你至少要有一個編譯單元有「定義」這類物件, linker 才有辦法決定它的 address (不然會指到不存在的東西去)。 定義跟宣告是不一樣的東西, 如果你不知道, 建議先去翻一些 C/C++ 基礎書籍。 > (這個函式或物件名?@@QAEXXZ) 這要看情形 (通常是 mangling 過的 symbol name), 你的 error messages 看起來不像是 GCC 生出來的, 所以我也沒辦法判斷, 但是 C++ 的 symbol name 會經過 mangling 的程序, 這是為了做 function overloading 用的, 而連 C 也有的 internal linkage symbol, 也就是 static global variable/function, 有些 compiler 也會對它做一些編碼動作, 不過沒有什麼必要就是了, 因為標記成 interanl 的 symbol 就算在不同編譯單元有相同名稱, 現代的 linker 還是有辦法去處理它。 > 其中.... > 「@@QAEXXZ」這種話是什麼意思呢? > 還有symbol是指什麼呢? -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Tsing Hua University Department: Computer Science Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design Researching: Software pipelining for VLIW architectures Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.252 > ╰─╮ ╚╦═╦╝ From:61-230-217-38.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩

02/10 00:59, , 1F
抱歉 我該說是MingW32G++
02/10 00:59, 1F
文章代碼(AID): #15p4sY00 (Programming)
文章代碼(AID): #15p4sY00 (Programming)