gpt4 book ai didi

c++ - 允许我的 C++ 库与 C 一起工作(减少函数集)

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:12:52 25 4
gpt4 key购买 nike

我一直想构建一个共享库,其中将利用类来保持其功能清洁(它可能需要很多输入或处理),尽管我仍然希望以 C 平台为目标。

如果我在我的所有原型(prototype)上应用 extern "C"{},并在示例中提供一组公开的函数来模仿类函数,这样对象就不需要“需要”来使用我的库,那些正常的函数会在将链接到它的 C 程序?

最佳答案

如果您按照您描述的方式创建一个 dll,也就是说,所有接口(interface)都是 extern "C"并且接口(interface)中的所有类型都是 POD,那么是的,您在 C 或 .NET 中使用它几乎没有问题

例子:

class MyClass
{
public:
MyClass(float x) {...}
void method(int x) {...}
~MyClass() {...}
};

#define MYAPI extern "C" __declspec(dllexport) //or whatever the syntax is for your compiler

MYAPI MyClass* CreateMyClass(float x)
{
return new MyClass(x);
}

MYAPI void MyClass_method(MyClass* p, int x)
{
return p->method(x);
}

MYAPI void DestroyMyClass(MyClass* p )
{
delete p;
}

关于c++ - 允许我的 C++ 库与 C 一起工作(减少函数集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5485998/

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