【发布时间】:2014-03-22 13:11:51
【问题描述】:
我正在尝试使用 g++ 编译和链接我的项目。我项目中的源文件是用 c++ 编写的,但是我试图链接的库是用 c 编写的,并且在头文件中的函数之前没有 extern 来定义它们是用 c 语言编写的。
这是我的编译和链接命令:
g++ socketd.cpp main.cpp -I src/common -L src/common -lwrappers -lerror -lpthread
我收到以下错误:
socketd.cpp:(.text+0xc6): 对 `error_sys(char const*, ...)' 的未定义引用
并且error_sys已经在liberror库中定义了。
所以我的问题是,为什么会出现这个错误?是不是因为c语言写的库需要重写函数并在它们之前定义extern?
非常感谢。
【问题讨论】:
-
看起来可能缺少 extern "C" {}。
-
@bmargulies 是这样,问题在第二句话中说明了;)