如何在c#中使用C++ dll导出类[重复]

Posted

技术标签:

【中文标题】如何在c#中使用C++ dll导出类[重复]【英文标题】:How to use C++ dll exported class in c# [duplicate] 【发布时间】:2012-12-20 17:30:18 【问题描述】:

可能重复:Possible to call C++ code from C#?

我有 C++ 类,它有一些静态方法。它在 dll 中,即导出类。我需要使用 C# 项目中的静态方法。没有 COM 可以吗?

【问题讨论】:

【参考方案1】:

COM 将是一个很好的方法(除了 COM 不支持静态方法的事实......)

另一种方法是将类转换为 C++/CLI 托管类,如下所示:

public ref class MyClass

public:
    static void StaticMethod()
    
        ...
    
;

DLL 中的 C++/CLI 托管类对 C# 可见,就像它是 C# 类一样。

如果您不想将 C++ 项目转换为 C++/CLI 项目,您可以创建一个包含托管类的 C++/CLI 项目,该托管类只是将非托管类包装在非托管 C++ 项目中。

【讨论】:

【参考方案2】:

你有两种方法:

用C++\CLI 封装原生C++ dll 或使用PInvoke

【讨论】:

在 PInvoke 中所有的例子都是关于简单函数的,有没有办法将它与类方法一起使用? @hellohi 你必须声明一个句柄看看 gdi32.dll 例子

以上是关于如何在c#中使用C++ dll导出类[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C++ DLL中的导出类在编译时会发出警告[重复]

在 C# 中找不到 C++ COM DLL 中的导出函数

从 C++ dll 编组导出的字符串向量

在 C# 中使用带有字符串的 C++ 类 (Dll)

C#调用C++导出类的一个实例

如何将 System::^array 从 C# 函数转换为 C++ 中的等效数据类型