gpt4 book ai didi

c++ - C++ 的 C 包装器

转载 作者:IT老高 更新时间:2023-10-28 22:18:05 28 4
gpt4 key购买 nike

我想使用 Pure Data 作为我自己的库的原型(prototype)设计工具。我发现 Pure Data 补丁是用 C 编写的,但我的库是用 C++ 编写的。那么如何在纯数据中使用此代码?由于我没有使用纯 C,我想知道如何为 C++ 类编写 C 包装器以及如何实例化我的类?还是我必须用 C 重写所有内容?

最佳答案

您需要为每个需要调用的函数编写包装函数。例如:

// The C++ implementation
class SomeObj { void func(int); };

extern "C" {
SomeObj* newSomeObj() {return new SomeObj();}
void freeSomeObj(SomeObj* obj) {delete obj;}
void SomeObj_func(SomeObj* obj, int param) {obj->func(param)}
}

// The C interface
typedef struct SomeObjHandle SomeObj;

SomeObj* newSomeObj();
void freeSomeObj(SomeObj* obj);
void SomeObj_func(SomeObj* obj, int param);

请注意,这必须是 C++ 代码。 extern "C" 指定函数使用 C 命名约定。

关于c++ - C++ 的 C 包装器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7691035/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com