我有一个原生的c ++应用程序,我想使用一些托管dll中的托管类型。我相信这样做的一种方法仍然保持c ++应用程序完全原生是使用COM与.NET互操作。但是我的问题是我的应用程序必须最初在没有安装CLR的机器上运行,所以我不希望加载CLR,除非我实际使用调用托管DLL的代码路径。
如何延迟加载托管DLL?
答案 0 :(得分:1)
我认为实现这一目标的最佳方法是通过COM互操作,在这种情况下本地管理。如果您的应用程序是本机的,则默认情况下不会加载CLR。您可以通过创建仅在实际需要时在托管程序集中定义的COM对象来“延迟加载”CLR。 CLR的COM层将负责在该点加载CLR并将CCW返回给托管对象。
答案 1 :(得分:0)
我建议为托管组件制作COM callable wrapper。
你可以拥有自己的.NET类,其接口可以被非托管代码引用(在我的例子中,我使用经典ASP实例化一个用.NET构建的对象)。