当我已经有接口和类型定义时,如何与C++ dll 进行互操作

本文关键字:C++ dll 互操作 接口 定义 类型 | 更新日期: 2023-09-27 18:35:46

我想在我的 C# .net 应用程序中为一个大型项目使用一组非托管C++库。下载库的代码后,我注意到使用这些库的演示项目实际上是在 C++/CLI 中完成的。

由于演示项目是在 C++/CLI 中完成的,因此作者没有提前添加大部分类型定义和接口定义,并在此演示应用程序的外部依赖项文件夹中的头文件中添加了大部分类型定义和接口定义。

如果可以,我究竟如何使用这些定义与这些托管C++ dll 进行互操作?

回顾一下:

  1. 库以非托管C++编写

  2. 演示项目是用托管编写的C++具有类型定义和接口定义以使用未组合的C++ dll,它们位于"外部依赖项"文件夹中,并且是头文件(.h)。

  3. 我想在我的 C# 项目中使用这些非托管C++ dll,我可以以某种方式使用这些定义与它们互操作吗?

    4.如果没有,我与他们互操作的最佳选择是什么?COM 互操作?

当我已经有接口和类型定义时,如何与C++ dll 进行互操作

我想你正在寻找这个....

这是 c# 的 FMod DLL 包装器中的一个示例

[DllImport (VERSION.dll)]
private static extern RESULT FMOD_DSPConnection_GetInput        (IntPtr dspconnection, ref IntPtr input);

我知道这是很多工作,但比重写非托管 DLL 要好得多。

不知道您打算使用哪个库,我只能希望这有所帮助