在c#的.lib文件中创建一个c++类的实例

Creating an instance of a C++ class in a .lib file from C#

本文关键字:一个 实例 c++ lib 文件 创建      更新时间:2023-10-16

如描述所示。我在其他相当大的c++项目中创建了一些静态.lib文件,其中包含一个我希望能够在c#中使用的类。在c#内部使用这些类的最佳方式是什么?c++库不受管理

到目前为止,最简单的选择是在c++/CLI中构建一个包装器库。

恐怕在c#中不可能从本机。lib文件导出类。但是使用c++ Cli,您可以包装类并通过wrapper .net类使用它。但是这种方法也需要包含一个头文件(.h或.hpp)。

COM dll则不同。它们可以在c#项目中引用,MSVS会自动包装本机类。

@marcelo-cantos的话:使用c++/CLI作为托管和非托管世界之间的桥梁。这很容易。

你唯一的选择是:

(1)编写一个包装器DLL,导出外部的"C"函数来调用你现有的c++对象。然后在c#中使用[DllImport]PInvoke来调用DLL的C函数。

(2)将本地c++类包装在COM接口中,并使用c# COM互操作来调用类上的方法。

c++/CLI桥接是目前最简单的选择。