C# 调用C++/C中的CLI构造函数#

C# 调用C++/C中的CLI构造函数#,c#,c++-cli,slimdx,managed-directx,C#,C++ Cli,Slimdx,Managed Directx,我试图通过以下代码段在SlimDX中使用StateBlock来保存和恢复状态: StateBlockMask mask = new StateBlockMask(null) { RasterizerState = true }; var sb = new StateBlock(device.Device, mask); StateBlockMask和StateBlock都是类。这给了我一个编译错误: '.ctor' is not supported by the language 在阅读其他

我试图通过以下代码段在SlimDX中使用StateBlock来保存和恢复状态:

StateBlockMask mask = new StateBlockMask(null) { RasterizerState = true };
var sb = new StateBlock(device.Device, mask);
StateBlockMask和StateBlock都是类。这给了我一个编译错误:

'.ctor' is not supported by the language
在阅读其他一些文章之后,似乎这是一个与使用错误参数调用托管代码有关的问题。在SlimDX的源代码中,我发现:

StateBlock::StateBlock(SlimDX::Direct3D10::Device^ device, StateBlockMask mask)
我根本没有使用C++/CLI的经验,所以我想知道这里是否有错误(如缺少或额外的^),或者我应该将错误集中在我这边吗


(注意:,具有相同问题的未来用户可能还需要检查此处给出的答案)

是否为
StateBlockMask
结构?如果不是,在C++构造函数中使用<代码> StistBug掩码>掩码< /> > .p/> 这看起来像是SlimDX的一个bug。您可能需要使用以确保正确处理它。

StateBlockMask是一个类(将信息添加到原始帖子中)。不幸的是,我不能在我的项目的当前状态重新编译C++代码(不允许)。@埃里克-然后你完成了这个项目,你不能使用这个C++ +CLI代码而不修复错误。你可以编写自己的C++ +CLI包装类,它使用STATECLAMP掩码^,然后在那个包装器类中调用STATEBULD构造器…羞耻。赶快找2k代表,这样你就可以编辑问题并添加交叉帖子的链接。同时,您可以随时使用注释。