gpt4 book ai didi

c# - 在 C# 应用程序中使用 C++ 类 DLL

转载 作者:IT王子 更新时间:2023-10-29 03:52:37 25 4
gpt4 key购买 nike

我有一个非托管 C++ DLL,它仅导出一个类(不是 COM...它只是一个简单的 C++ 类)作为其接口(interface)。我想在 C# 中使用此类,但被告知不能仅将其导入到 C# 中。

在我的 C# 应用程序中使用此类的正确方法是什么?

最佳答案

假设类 Foo 的简单方法:

  1. 创建一个 C++/CLI 项目,调用这个 FooWrapper。
  2. 使 FooWrapper 依赖于非托管 dll(无论您通常如何)。
  3. 创建一个托管类 ManagedFoo,它包含一个 Foo* 类型的私有(private)实例字段。
  4. 在 ManagedFoo 中提供公共(public)包装函数,这些函数转发到基础实例字段。
  5. 可选(尽管推荐):
    • 将参数从 .net 惯用语(字符串等)转换为 C++ 惯用语(std::string 或 char*)
    • 捕获非托管异常并抛出托管异常

然后您使您的 c# 代码依赖于 FooWrapper 项目/dll,并确保非托管 dll 与其一起正确部署,如何完成取决于非托管 dll,但在同一目录中通常就足够了。

如果函数不依赖于类的实例,那么 P/Invoke 就更简单了

关于c# - 在 C# 应用程序中使用 C++ 类 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569603/

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