我有一个使用DirectX的原生C ++ DLL,我希望能够通过C#使用它来创建内容创建工具。
添加COM需要付出相当大的努力。 可以使用P / Invoke来维护使用多态的类,还是需要我包装大部分代码以便于使用P / Invoke?
有更好的解决方案吗?或者我是否应该考虑使用Qt在C ++中编写工具?
答案 0 :(得分:2)
我总觉得C ++ / CLI在做C#到C ++互操作时总是最好的选择。您可以轻松地为非托管库创建精简包装器,它看起来与C#代码的托管库完全相同。它还可以让您更好地控制编组和固定的执行方式。
我相信有一些方法可以自动生成C ++ / CLI,但我从未使用它们。
有关C ++ / CLI的更多信息: http://msdn.microsoft.com/en-us/magazine/cc163681.aspx
答案 1 :(得分:1)
我认为直接从C#使用D3D渲染不是一个选项? (因为那肯定会更容易!)
很久以前,我使用SWIG自动维护C ++渲染DLL代码的C#“绑定”。它使用P / Invoke在C#端公开C ++对象,您不必再维护该代码了。
答案 2 :(得分:0)
您无需在QT上编写回文。
我建议你用C#和& amp;编写Observer类。 C ++,并隐藏Native函数的调用。 架构是这样的
您在C#中的代码 - >观察者(C#) - >对Observer的原生调用(C ++) - >打电话给你的dll。