g ++链接器向xxxx抛出未定义的引用

时间:2014-03-22 13:11:52

标签: c++ c g++

我正在尝试使用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 *,...)'

并且已经在liberror库中定义了error_sys。

所以我的问题是,为什么我会收到此错误?是因为我必须重新编写函数并在它们之前为用c语言编写的库定义extern吗?

非常感谢。

1 个答案:

答案 0 :(得分:4)

用C语言编写的库不太可能extern "C"保护其函数,但这对C ++代码来说不是问题。只需自己提供包括:

extern "C" {
    #include <my_c_header.h>
}