我需要在我的.NET程序中引用两个程序集:
第一个程序集,即ILNumerics
,通过hdf5.dll
平台调用直接引用本机dllimport("hdf5.dll")
库(版本1.8.17)。
我自己的第二个程序集是顶级本机matlab运行时库上的.net包装器,但是这个本机运行时也在内部使用本机hdf5.dll
库(版本1.8.12) [使用matlab方面的hdf5数据时需要] 。
另请注意,原生hdf5.dll
库还取决于hdf5_hl.dll
和zlib.dll
。
我尝试只保留hdf5.dll
库和依赖项的一个版本,并在启动应用程序时将环境变量HDF5_DISABLE_VERSION_CHECK
设置为2
,但我无法逃避突然崩溃因为我需要使用来自ILNumerics
和Matlab runtime
方的hdf5处理。
有没有办法可以在"dllimport("hdf5.dll")"
程序集中欺骗ILNumerics
来替换其他名称?注意,我没有源代码,因此我无法使用dllimport("hdf5_1_8_17.dll")
进行硬重新编译,对于matlab运行时库也是如此,我无法更改其中的任何内容(同样是第三方+本机代码)。那么,如果hdf5.dll
中有ILNumerics
名称可能,那么hdf5_hl.dll
对hdf5.dll
的间接引用会是什么?
我想我唯一的最后一个选择是在不同的应用程序域中使用加载ILNumerics
和Matlab runtime
程序集,但这将是" hell"因为在调用一个或另一个程序集公开的例程时我需要序列化数据,对吧? (我从未使用过单独的应用程序域)