【问题标题】:Can .net dynamic load c++/cli dll from memory?.net 可以从内存中动态加载 c++/cli dll 吗?
【发布时间】:2015-01-17 00:12:53
【问题描述】:

我有一个依赖于本机 dll 的 c++/cli dll。通过使用内存模块将本机 dll 嵌入到 cli dll 中,我能够将它们打包到一个混合 dll 中。 我想知道是否可以将此混合 dll 嵌入到 .net exe 中并从内存中加载(无需将文件提取到磁盘)。 我试过 Ilmerge 和 System.Reflection.Assembly.Load(byte[]...) 但它不起作用。

所以我现在要做的是在之前提取 dll 并调用函数,然后在程序完成后将其删除,这是我不想要的。

【问题讨论】:

  • 无法从内存中加载混合模式程序集。任何本机 dll 也是如此。尝试编译为纯 IL。

标签: .net c++-cli


【解决方案1】:

混合模式 dll 依赖于本机 dll,由于 Windows 图像加载器的限制,无法从内存中加载。我已经看到了一些从内存中加载 dll 的 C++ 代码,但我怀疑你是否想这样做。它基本上重新实现了加载器。

但如果你想将你的 exe 作为单个文件分发,我建议你使用LibZ。使用此工具,您可以将混合模式 dll 作为资源嵌入到 C# 程序集中。加载 C# 模块时,它会将混合模式程序集转储到临时文件夹并透明地加载它。您甚至可以嵌入两个版本的混合模式 dll,每个平台一个版本:x86 或 x64。

【讨论】:

    猜你喜欢
    • 2011-07-24
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2016-02-27
    • 2010-09-30
    • 1970-01-01
    • 2016-01-29
    相关资源
    最近更新 更多