我正在尝试使用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吗?
非常感谢。
答案 0 :(得分:4)
用C语言编写的库不太可能extern "C"
保护其函数,但这对C ++代码来说不是问题。只需自己提供包括:
extern "C" {
#include <my_c_header.h>
}