引用的.net程序集中的本机dll版本冲突

时间:2018-01-22 13:59:12

标签: c# .net dll native

我需要在我的.NET程序中引用两个程序集:

  • 第一个程序集,即ILNumerics,通过hdf5.dll平台调用直接引用本机dllimport("hdf5.dll")库(版本1.8.17)。

  • 我自己的第二个程序集是顶级本机matlab运行时库上的.net包装器,但是这个本机运行时也在内部使用本机hdf5.dll库(版本1.8.12) [使用matlab方面的hdf5数据时需要]

另请注意,原生hdf5.dll库还取决于hdf5_hl.dllzlib.dll

我尝试只保留hdf5.dll库和依赖项的一个版本,并在启动应用程序时将环境变量HDF5_DISABLE_VERSION_CHECK设置为2,但我无法逃避突然崩溃因为我需要使用来自ILNumericsMatlab runtime方的hdf5处理。

有没有办法可以在"dllimport("hdf5.dll")"程序集中欺骗ILNumerics来替换其他名称?注意,我没有源代码,因此我无法使用dllimport("hdf5_1_8_17.dll")进行硬重新编译,对于matlab运行时库也是如此,我无法更改其中的任何内容(同样是第三方+本机代码)。那么,如果hdf5.dll中有ILNumerics名称可能,那么hdf5_hl.dllhdf5.dll的间接引用会是什么?

我想我唯一的最后一个选择是在不同的应用程序域中使用加载ILNumericsMatlab runtime程序集,但这将是" hell"因为在调用一个或另一个程序集公开的例程时我需要序列化数据,对吧? (我从未使用过单独的应用程序域)

0 个答案:

没有答案