【问题标题】:mixing C & C++ code in static library在静态库中混合 C 和 C++ 代码
【发布时间】:2011-08-29 09:50:44
【问题描述】:

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

库的生成文件使用“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 tostd::allocator::~allocator()' 的引用”)。

有没有办法解决这个问题?

【问题讨论】:

    标签: c++ c static-libraries


    【解决方案1】:

    使用 g++ 作为链接器:

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

    【讨论】:

    • 或添加 -lstdc++ 并仍然使用 gcc。如果你有一个,你应该有另一个……
    猜你喜欢
    • 2021-06-09
    • 2017-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2013-02-07
    相关资源
    最近更新 更多