混合C& C++静态库中的代码

发布于 2024-12-02 04:12:07 字数 540 浏览 0 评论 0原文

我正在尝试创建一个包含 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 tostd::allocator::~allocator()'").

Are there any way around this problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蘸点软妹酱 2024-12-09 04:12:07

使用 g++ 作为链接器:

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

Use g++ as linker:

gcc my_c_file.c -c
g++ my_c_file.o -L blabla -lblabla
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文