【问题标题】:Wrapper to unmanaged code非托管代码的包装器
【发布时间】:2011-02-09 19:11:42
【问题描述】:

您将如何构建非托管代码的包装器以便在托管代码中使用它?您必须在什么时候这样做?

【问题讨论】:

    标签: c++-cli wrapper managed


    【解决方案1】:

    您通常不需要包装器,许多具有直接导出的 C 函数的 DLL 可以使用 [DllImport] 属性来调用。 C 导出的一个例外是设计不佳的 DLL,它需要客户端代码释放内存,而托管代码无法做到这一点,因为它无权访问分配器。

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

    【讨论】:

    • 不完全明白。你说 c 类可以被调用,但 c++ 不能?为什么?
    • 我在回答第 2 段中特别提到了这一点。
    猜你喜欢
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多