包装到非托管代码

时间:2011-02-09 19:11:42

标签: c++-cli wrapper managed

如何构建非托管代码的包装器以便在托管代码中使用它,以及何时必须这样做?

1 个答案:

答案 0 :(得分:2)

您通常不需要包装器,许多具有直接导出C函数的DLL可以使用[DllImport]属性进行排序。 C导出的一个例外是设计糟糕的DLL,它要求客户端代码释放内存,托管代码无法完成,因为它无法访问分配器。

拥有包装器的情况是本机C ++类。托管代码不能直接对其进行直接驱动,因为它不知道如何创建类的实例(需要知道对象的大小并调用构造函数),也不知道如何销毁它(需要调用析构函数)。在C ++ / CLI中很容易做到。非常机械,SWIG项目可以自动完成。然而,学习该工具比学习如何编写包装器更具投资性。