【发布时间】:2011-02-09 19:11:42
【问题描述】:
您将如何构建非托管代码的包装器以便在托管代码中使用它?您必须在什么时候这样做?
【问题讨论】:
您将如何构建非托管代码的包装器以便在托管代码中使用它?您必须在什么时候这样做?
【问题讨论】:
您通常不需要包装器,许多具有直接导出的 C 函数的 DLL 可以使用 [DllImport] 属性来调用。 C 导出的一个例外是设计不佳的 DLL,它需要客户端代码释放内存,而托管代码无法做到这一点,因为它无权访问分配器。
你有有一个包装器的情况是一个本地 C++ 类。托管代码不能直接调用它,因为它不知道如何创建类的实例(这需要知道对象的大小并调用构造函数),也不知道如何销毁它(这需要调用析构函数)。在 C++/CLI 中很容易做到。非常机械,SWIG 项目可以自动完成。然而,学习该工具比学习如何编写包装器更像是一种投资。
【讨论】: