混合C& C++静态库中的代码
我正在尝试创建一个包含 C 和 C++ 函数的静态库,然后在 C 环境中使用该库。根据 在 C 代码中使用 C++ 库,我包装了 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)”、“未定义引用
std::allocator::~allocator()'”)。
有什么办法可以解决这个问题吗?
I'm trying to create a static library that contains C and C++ functions and then use this library in a C environment. As per Using C++ library in C code, I wrap C functions around C++ functions.
The makefile for the library uses "ar -rvs libNAMEX.a $(OBJECTS)" where OBJECTS contains the object files compiled by gcc or g++ depending on type (GCC version 4.4.1).
I don't encounter any errors when building the library. But when I try to compile a C file (with a cross-compiled version of GCC 4.5.1) that used the library: "gcc -L[PATH TO libNAMEX.a] -lNAMEX ... c_source.c", it gives me errors related to C++ extensions (i.e., "undefined reference to operator new(unsigned long)", "undefined reference to
std::allocator::~allocator()'").
Are there any way around this problem?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 g++ 作为链接器:
Use g++ as linker: