Re: [問題] GCC的error訊息....
※ 引述《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
02/10 00:59, 1F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章