2011-02-09 75 views

回答

2

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

有一个包装的情况是一个本地C++类。由于不知道如何创建类的实例(这需要知道对象的大小并调用构造函数),也不知道如何销毁它(这需要调用析构函数),所以托管代码无法直接调用它。在C++/CLI中执行起来非常简单。非常机械的,SWIG项目可以自动完成。然而,学习这个工具比学习如何编写包装更重要。

+0

没有完全理解。你说c类可以被调整,但C++不能?为什么? – 2011-02-10 06:25:41