看板Programming
标 题Re: [问题] GCC的error讯息....
发信站政大狂狷年少 (Fri Feb 9 17:43:24 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!newsfeed.nthu!news.cs.nthu!WHSHS
※ 引述《[email protected] (阿怪)》之铭言:
> ※ [本文转录自 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:
[email protected]
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"的狂狷不驯;属於年少的轻狂色彩 ◎
1F:推 aguai:抱歉 我该说是MingW32G++ 222.71.74.134 02/10 00:59