如何在非托管代码中动态加载托管(.Net)DLL?

时间:2011-08-28 17:46:52

标签: dll unmanaged managed

如何在非托管代码中动态加载托管(.Net)DLL?

我正在用C ++创建一个插入到应用程序中的插件系统,我希望能够编写C#插件。

我搜索了一下但只能找到COM加载(使用#import),但我不知道如何在运行时这样做,如果可能的话。

C#DLL(插件)可以调用C ++ DLL(插件管理器)中的函数。

我更喜欢不需要用/ clr编译C ++ DLL的解决方案。

1 个答案:

答案 0 :(得分:1)

这里有很多问题。

  

我更喜欢不需要用/ clr编译C ++ DLL的解决方案。

在某种程度上,要使用C#DLL,您需要引导CLR。使用/ clr有一个巨大的优势 - 您可以为C#插件提供真正的托管API。

您的主要其他选项是使用COM,并提供基于COM的API。这将在C#以及其他语言中正常工作,并负责为您加载CLR。唯一的其他API是self-host the CLR using the hosting APIs。这为您提供了最大程度的控制,但绝对是一项额外的工作。