首页 > 后端开发 > C++ > 如何解决将静态 C 库与 C 代码链接时出现'未定义的引用”错误?

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

Mary-Kate Olsen
发布: 2024-10-23 14:53:32
原创
296 人浏览过

How to Resolve

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

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

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

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

例如:

<code class="cpp">extern "C" {
    #include <dual/xalloc.h>
    #include <dual/xmalloc.h>
}</code>
登录后复制

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

<code class="cpp">#if defined (__cplusplus)
extern "C" {
#endif

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

#if defined (__cplusplus)
}
#endif</code>
登录后复制

以上是如何解决将静态 C 库与 C 代码链接时出现'未定义的引用”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板