小编pet*_*ete的帖子

混合C和C++库

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

当我在C++源代码中包含来自C库的头文件时,我将其包装在extern"C"中:

extern "C"
{
  #include <c-library-header.h> 
}
Run Code Online (Sandbox Code Playgroud)

现在奇怪的是链接时得到"未定义的引用"错误,但这些错误取决于我列出库的顺序:

  • 如果我首先列出C库,则C++模块引用的该库中的所有符号都显示为"undefined".
  • 如果我首先列出C++库,那么C++模块引用的该库中的所有符号都显示为"undefined".

我本以为在g ++命令行中出现静态库的顺序是完全无关紧要的.有人有任何线索吗?

c c++ gnu

4
推荐指数
1
解决办法
483
查看次数

标签 统计

c ×1

c++ ×1

gnu ×1