gpt4 book ai didi

c# - 使用 SWIG 从 C# 使用 C++ 游戏引擎

转载 作者:太空宇宙 更新时间:2023-11-04 11:59:19 25 4
gpt4 key购买 nike

我最近获得了我打算使用的 3D 游戏引擎的 C++ 源代码。然而,我的 C++ 编码技能远非传奇,而且我确实发现 C# 更容易使用。我见过完全用 C++ 实现的组件,在 .NET 中只有一组包装类,没有源代码——相反,它们使用 [ComImport] 关键字直接指向 DLL 的类将类标记为外部,并将“public virtual extern”关键字标记为外部函数。因此是否可以使用 SWIG,在 C# 中创建类和方法,直接链接到 C++ 游戏引擎的 DLL 中的类和方法?所以我应该能够直接在 .NET 中实例化 C++ 引擎的类,并从 .NET 中控制它们。这可能吗?

最佳答案

如果 C++ 类是 COM 对象,则只能使用 [ComImport]。很有可能他们不认为这是一个游戏引擎。 (在您的 C++ 代码中搜索 CoInitialize 之类的 COM 方法以确定)

鉴于您拥有源代码,理论上 SWIG 将为您的 C++ 创建 C# 包装器,而不需要您的 C++ 类成为 COM 对象,但是不要期望这完全是微不足道的。

我过去采用的另一种方法是为我的 C++ 编写“C”包装器(谷歌“extern“c””),然后使用 pinvoke 轻松创建 C# 包装器。在您的情况下这是否可能取决于 C++ api。

请记住,任何 C# => native (c、c++ 等)都会涉及一些性能损失。多少取决于 C# -> native (或 native -> C#)调用的频率。

关于c# - 使用 SWIG 从 C# 使用 C++ 游戏引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14795941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com