繁体   English   中英

使用SWIG将指针从C ++返回到C#

[英]Returning pointers from C++ to C# using SWIG

如何使用SWIG从C ++返回指向C#的指针? 例如,我有以下内容:

class MyClass
{
    public:
        void* buffer(); // return pointer to internal buffer
        int *somethingElse();
};

我该如何编写swig接口文件以成功使用c#中的此类?

使用C ++ / CLI包装C ++类。 在您的C ++ / CLI类中,返回适当类型的对象。

例如:

//[untested! not production quality. Just to illustrate a point]
ref class MyClassWrapper
{
    MyClass * m_pMyClass;

    public:
    MyClassWrapper():m_pMyClass(NULL)
    {
        m_pMyClass = new MyClass();
    }   

    ~MyClassWrapper()
    {
        this->!MyClassWrapper();
    }

    array<byte>^ AccessBuffer()
    {
        m_pMyClass->buffer();
        array<byte>^ buf = gcnew array<byte>(buffer_length);
        ...
        //Copy elements to buf
        ...
        return buf;
    }

    !MyClassWrapper()
    {
        delete m_pMyClass;
        m_pMyClass = NULL;
    }
};

你可以用

%apply void *VOID_INT_PTR { void * }

生成void *作为C#中的System.IntPtr。 但是我现在真的确定是否正是您想要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM