相关疑难解决方法(0)

在C代码中使用C++库

我有一个C++库,提供各种用于管理数据的类.我有库的源代码.

我想扩展C++ API以支持C函数调用,以便库可以同时与C代码和C++代码一起使用.

我正在使用GNU工具链(gcc,glibc等),因此语言和体系结构支持不是问题.

有什么理由说明技术上不可能吗?

是否有任何疑难杂症的,我需要注意?

是否有关于此的资源,示例代码和/或文档?


我发现的其他一些事情:

  1. 使用以下命令包装C代码需要使用的C++标头.

#ifdef __cplusplus
extern "C" {  
#endif  
//  
// Code goes here ...  
//  
#ifdef __cplusplus  
} // extern "C"  
#endif
Run Code Online (Sandbox Code Playgroud)
  1. 将"真正的"C++接口保存在C未包含的单独头文件中.在此处考虑PIMPL原理.使用#ifndef __cplusplus #error东西可以帮助检测任何疯狂.
  2. 小心C++标识符作为C代码中的名称
  3. 在C和C++编译器之间大小不一的枚举.如果您使用GNU工具链可能不是问题,但仍然要小心.
  4. 对于结构体,请遵循以下形式,以便C不会混淆.

    typedef struct X { ... } X
    
    Run Code Online (Sandbox Code Playgroud)
  5. 然后使用指针传递C++对象,它们只需要在C中声明为struct X,其中X是C++对象.

所有这一切都是由一位C++精灵的朋友提供的.

c c++ gcc glibc

97
推荐指数
3
解决办法
8万
查看次数

标签 统计

c ×1

c++ ×1

gcc ×1

glibc ×1