c++ - 在静态库中混合 C 和 C++ 代码

标签 c++ c static-libraries

我正在尝试创建一个包含 C 和 C++ 函数的静态库,然后在 C 环境中使用该库。根据 Using C++ library in C code ,我将 C 函数包装在 C++ 函数周围。

库的 makefile 使用“ar -rvs libNAMEX.a $(OBJECTS)”,其中 OBJECTS 包含由 gcc 或 g++ 编译的目标文件,具体取决于类型(GCC 版本 4.4.1)。

我在构建库时没有遇到任何错误。但是当我尝试编译一个使用库的 C 文件(使用 GCC 4.5.1 的交叉编译版本)时:“gcc -L [PATH TO libNAMEX.a] -lNAMEX ... c_source.c”,它给出我遇到了与 C++ 扩展相关的错误(即,“对 operator new(unsigned long) 的 undefined reference ”、“对 std::allocator::~allocator()' 的 undefined reference ”)。

有什么办法可以解决这个问题吗?

最佳答案

使用 g++ 作为链接器:

gcc my_c_file.c -c
g++ my_c_file.o -L blabla -lblabla

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

相关文章:

c++ - 错误 : Jump to case label in switch statement

c - 将数字放置在随机坐标的“开放”槽中

c++ - C中的快速生产者/慢速消费者

c# - C# 中的 typedef void* 替代方案

c++ - 已编译库的 header 无法相互访问

c++ - 自动将目录中的所有文件添加到库项目

c++ - QString 到 char 不工作

c++ - std::pair assignment with downcast

C 静态库无法相互识别 - 为什么我得到 "undefined reference to ` 函数`”?(链接器错误)

c++ - 实现自定义(字符串)流时的 Xcode 4.5.2 libc++ std::bad_cast