在c ++ / cli包装器方法和c#之间传递一个对象**

时间:2014-11-04 23:21:44

标签: c# c++-cli clr

所以我有一个托管的c ++包装器,用于我的本机c ++代码,如下所示:

namespace AmbitCLRWrapper {

    public ref class Render
    {
        AmbitRender::Render* nativeClass;
    public:
        Render()
        {
            nativeClass = new AmbitRender::Render();
        }
        ~Render()
        {
            this->!Render();
        }
        !Render()
        {
            delete nativeClass;
        }
        void getD3DSurface(IDirect3DSurface9** surface)
        {
            nativeClass->getD3DSurface(surface);
        }
        void** getD3DSurfaceR()
        {
            IDirect3DSurface9** surface;
            nativeClass->getD3DSurface(surface);
            return (void**)surface;
        }
    };
}

我可以将dll导入c#就好了,创建一个没有问题的渲染:     AmbitCLRWrapper.Render渲染=新的AmbitCLRWrapper.Render();

但是我无法弄清楚如何使用我的底部两种方法中的任何一种,或者即使它们是正确的方法 - 但我正在尝试使用http://msdn.microsoft.com/en-us/library/cc656716(v=vs.110).aspx作为模板(但我做)想要一个包装器,而不仅仅是从非托管传递到c#

任何人都知道如何正确地做到这一点?

IntPtr pSurface = render.getD3DSurfaceR(); // this line does not compile

需要像这样消费:

d3dimg.SetBackBuffer(D3DResourceType.IDirect3DSurface9, pSurface);

0 个答案:

没有答案