【问题标题】:g++ linker throwing undefined reference to xxxxg ++链接器抛出对xxxx的未定义引用
【发布时间】: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?

非常感谢。

【问题讨论】:

标签: c++ c g++


【解决方案1】:

用 C 编写的库不太可能在其函数周围有 extern "C" 保护,但这对于 C++ 代码来说不是问题。只需在 include 周围自行提供:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-03
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多