Ale*_*der 5 c c++ backwards-compatibility
我一直想要构建一个共享库,它将利用类来保持其运行清洁(可能需要许多输入或处理),尽管我仍然希望针对C平台.
如果我在我的所有原型上应用extern"C"{},并在示例中提供了一组模拟类函数的公开函数,以便对象不是"必需"来使用我的库,那些正常函数是否可以在C程序中运行会链接到它吗?
如果你在你描述的fasion中创建一个dll,也就是说,所有接口都是extern"C",接口中的所有类型都是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;
}
Run Code Online (Sandbox Code Playgroud)