”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何解决将静态 C 库与 C++ 代码链接时出现“未定义的引用”错误?

如何解决将静态 C 库与 C++ 代码链接时出现“未定义的引用”错误?

发布于2024-11-08
浏览:257

How to Resolve \

对用 C 代码链接静态 C 库时的错误的未定义引用

当尝试用 C 代码链接静态 C 库时,您可以尽管修改了链接顺序,但仍遇到“未定义的引用”错误。此问题是由 C 和 C 编译创建的不同符号名称(称为“名称修饰”)引起的。

在 C 中,链接器在错误消息中显示分解的符号名称,这可能会造成混淆。使用“nm -u”检查目标文件 (*.o) 显示引用的符号名称与库中的符号名称不匹配。

为了解决此问题,将使用使用C 编译器必须将其函数声明括在“extern "C" {}”块中。这会抑制块内所有内容的 C 名称修改。

例如:

extern "C" {
    #include 
    #include 
}

或者,您可以将函数声明包装在头文件中,如下所示:

#if defined (__cplusplus)
extern "C" {
#endif

/*
 * Put plain C function declarations here ...
 */

#if defined (__cplusplus)
}
#endif
版本声明 本文转载于:1729663094如有侵犯,请联系[email protected]删除
最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3