如何从C ++ DLL动态加载C#DLL

我有一个C ++应用程序。 这支持用户的C ++插件DLL,它将动态加载这些DLL,然后能够动态地创建和使用用户的类型。 这些用户类型派生自主应用程序核心库中定义的基类型和接口,因此我将用户对象作为指向基类的指针,并调用用户的虚函数来实现它们的魔力。

现在我想扩展插件DLL来允许托管DLL(我主要关心C#)。 我希望在C#插件DLL中发生所有相同的魔术。

我怎样才能动态加载这些dll,一些我认为我目前使用的win32的LoadLibrary会满足于托管的DLL。 我不会在编译/链接时访问这些库,它们来自用户。

在我加载了这个库之后,不幸的是我怀疑我未来的COM是调用派生函数的方式。 可能我可以使用我一直在阅读的CLI / C ++包装器,但是我在这里很缺乏经验,并且非常感谢任何建议或指向相应文章的链接。


这样做的另一种方法是创建一个C ++ / CLI项目,托管您的C#类并将其用作C ++项目的桥梁。

这种方法的更多链接:

  • 用c ++ / cli桥连接c ++和c#代码
  • .NET到C ++桥
  • 最新的链接有简单的桥梁源代码


    你要做的是基本上在你的过程中启动一个CLR实例。 看看这篇关于CLR托管的文章


    以下是一些描述我解决方案的幻灯片。

    https://docs.google.com/presentation/pub?id=1YoJRGnveh4By7ym4GL19L7OzYOFORZQB6RgJEPVfFb8&start=false&loop=false&delayms=3000

    我的解决方案是有一个win32插件DLL,通过正常方式加载(LoadLibrary),链接到混合的C ++ / CLI DLL,它链接到纯托管的C#代码。 我允许使用大量锅炉板进行调用,以及基于Padu给出的链接的双c ++ / cli桥接模式。 细节相当复杂,但最终API用户的工作非常简单,这就是我的目标。 受管理的插件对象编写器只是从一个对象派生而来,并且一切正常。

    基本上我做了一个模式,提供“混合模式伪继承”现在我的C#对象从C ++中的基类派生。

    链接地址: http://www.djcxy.com/p/52883.html

    上一篇: How to dynamically load a C# dll from a C++ DLL

    下一篇: How to reduce queries in django model has