gpt4 book ai didi

c++ - 如何在 .NET 中使用托管 DLL 中的非托管类?

转载 作者:行者123 更新时间:2023-11-30 02:13:16 24 4
gpt4 key购买 nike

我有一个非托管类,我正在尝试从托管 DLL 文件中导出。我正在尝试在另一个托管 DLL 文件中使用非托管类。但是,当我尝试执行此操作时,出现了链接 错误。

我对非托管 DLL 文件做过很多次,所以我知道它是如何工作的。我知道如何在托管类中使用“public ref”等。

我需要在某处设置一些标志吗?还是我必须做一些 DllImport 魔术?

这是在 .NET 2.0 和 Visual Studio 2005 上.

最佳答案

如果您想从托管代码中使用非托管类,您可以:

  1. 使用一些讨厌的东西 P/Invoke加载类成员函数(构造函数、析构函数等)并制作一个更糟糕的托管包装类来调用“真实”成员函数。当涉及虚拟方法时,情况会变得更糟。
  2. 第二个选项(在我看来更好)是写一个 C++/CLI包装类(您提到过您对此很熟悉)是非托管类的简单代理。对于非托管类中的每个成员函数,您的代理类中都会有一个类似的成员函数。然后这是一个从托管项目添加对该 DLL 的引用的简单案例,您将能够像使用任何其他 .NET 类一样使用您的类。考虑到如果您的类(class)公开其他非托管内容(那些无法编码的内容),您将遇到更多工作。

如果您需要有关第二个选项的更多信息,我可以查找一些旧链接来更多地解释此技术。

关于c++ - 如何在 .NET 中使用托管 DLL 中的非托管类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/674009/

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