mixing c and c++

mixing c and c++

本文关键字:c++ and mixing      更新时间:2023-10-16

我有几个关于混合代码的问题:

  1. 一个基于c的完整项目,如果我想使用一个c++库,那么我用纯c代码围绕它创建一个包装器,然后构建共享库,我必须改为g++而不是gcc编译器吗?

  2. 如果包装器与库一起编译为静态库,该怎么办?

我很想知道您使用的库只有C++版本,而不是纯C接口。

无论如何,由于您将调用C++代码,因此您的包装器将被视为C++,并且需要使用g++进行编译。这与名称篡改有关,并且您需要能够调用c++库公开的那些函数。您可以使用readelf -s查看它们。

但是,包装器公开的函数需要标记为extern "C",这样它们的名称就不会被破坏。然后,您将能够从纯C应用程序中调用它们。

静态库与共享库在这里并不重要。这只是生成正确符号的问题,这样链接就可以发生。

  • 如何混合C和C++