2011-03-01 76 views
2

调用C++/CLI构造我想保存和使用在SlimDX一个StateBlock通过下面的代码片段恢复状态:错误从C#

StateBlockMask mask = new StateBlockMask(null) { RasterizerState = true }; 
var sb = new StateBlock(device.Device, mask); 

两个StateBlockMask和StateBlock是类。这给了我一个编译错误:

'.ctor' is not supported by the language 

从这里SO一些其他职位阅读,似乎这是一个具有与调用了错误的参数的托管代码做的一个问题。在SlimDX的来源,我发现:

StateBlock::StateBlock(SlimDX::Direct3D10::Device^ device, StateBlockMask mask) 

我没有经验与C++/CLI可言,所以我想知道,如果有什么错在这里(如丢失或额外^),或者我应该集中精力我身边的缺点?

(注:This question has been cross-posted to gamedev.net,未来的用户提供同样的问题可能还需要检查给出的答案有)

回答

3

StateBlockMask一个结构?如果没有,请在C++构造函数中使用StateBlockMask^ mask

+0

StateBlockMask是一个类(将信息添加到原始帖子中)。不幸的是,我不能在我的项目当前状态下重新编译C++代码(不允许)。 – erik 2011-03-01 14:08:10

+1

@erik - 那么你已经完成了这个项目,如果不修复这个bug,你就不能使用这个C++/CLI代码。 – 2011-03-01 15:07:15

+0

您可以编写自己的C++/CLI包装类,该类包含StateBlockMask ^然后在该包装类中调用StateBlock构造函数。 – 2011-03-02 01:55:46

0

这看起来像是SlimDX中的一个bug。您可能需要使用issue tracker以确保正确处理它。

+1

[剽窃自己?](http://www.gamedev.net/topic/596656-slimdx-c-stateblock-contructor-problem-ctor-not-supported-by-the-language/)...羞愧羞愧羞耻。赶快获得2k代表,以便您可以编辑问题并添加交叉帖子的链接。同时你可以随时使用评论。 – 2011-03-02 01:47:54