gpt4 book ai didi

c++ - 混合 C 和 C++ 库

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:19:06 24 4
gpt4 key购买 nike

我在构建用 C++ 编码的可执行文件时遇到了一个奇怪的问题,该可执行文件使用本身依赖于 C 库的 C++ 库。我使用 gcc 编译了构成 C 库的 C 模块,使用 g++ 编译了所有其他源模块。 C 和 C++ 库都是静态库。

当我在 C++ 源代码中包含 C 库中的头文件时,我总是将它包装在 extern "C"中:

extern "C"
{
#include <c-library-header.h>
}

现在奇怪的是链接时会出现“ undefined reference ”错误,但这些会根据我列出库的顺序发生变化:

  • 如果我首先列出 C 库,则 C++ 模块引用的该库中的所有符号都显示为“未定义”。
  • 如果我首先列出 C++ 库,则 C++ 模块引用的该库中的所有符号都显示为“未定义”。

我本以为在 g++ 命令行上出现静态库的顺序是完全不相关的。有人有任何线索吗?

最佳答案

顺序很重要。

如果 libxxx 依赖于 libyyy,则应首先指定 libxxx,即 -lxxx -lyyy

在不幸的情况下,当两者相互依赖时,一个库可能会被提及两次

-lxxx -lyyy -lxxx

参见:

关于c++ - 混合 C 和 C++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22825956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com