我有一个用标准 C++ 编写的库。我还有一个用 C# 编写的 .Net Windows 窗体应用程序,它利用非托管库。
我知道我可以只使用 pinvoke,但我的 C++ 完全是面向对象的,我真的不想乱搞编组等。
有没有一种方法可以让我创建一个新的托管 C++ dll 项目,复制并粘贴我的头文件和代码文件,然后编译它并有权访问所有类?
或者我是否必须在托管 c++ 中创建一些引用类并将其连接到我的非托管类?我只是希望这件事尽可能简单。
Thanks!
即使在 C++/CLI 中,您仍然需要编写特定的 .NET 包装器,它们只是看起来不同。因此,能否将其放入 C++/CLI 项目中并重新编译并按原样使用它,答案是否定的。您仍然必须对数据进行编组(在这种情况下,您可能也可以使用 p/Invoke),或者您可以创建句柄并使用固定内存以使您的结构可用于托管代码。
我用两种方法完成了这件事:我用 CUDA C 编写了一个 GPU 库,并使用 p/Invoke 从 F# 调用它,我用 C++ 编写了一个视频处理库,并编写了一个精简的 C++/CLI 包装器,然后在.NET 应用程序。我认为 CLI 包装器更痛苦,但对于实时视频,我需要更少的延迟(更少的复制内存)。对于 GPU 项目,我更关心吞吐量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)