我有一个用C#编写的DLL,它使用Robert的UnmanagedExports库并使用[DllExport]
导出函数。
我可以用LoadLibrary
很好地加载它,并调用它导出的函数。当我试图使用BTMemoryModule
将其加载到内存中时,入口点调用(DllMain - DLL_PROCESS_ATTACH) TDllEntryProc
(在函数BTMemoryLoadLibary
中)返回false。如何使用BTMemoryModule
加载这样的DLL。
发布于 2015-11-04 14:44:46
不支持从内存中加载DLL。任何这样做的代码都是使用不受支持的黑客来实现的。该系统提供了LoadLibrary
、LoadLibraryEx
等来执行这一任务,它们要求动态链接库存在于磁盘上。
您的DLL是一个混合模式的.net程序集,它需要加载程序进行特殊处理。通过调用LoadLibrary
、LoadLibraryEx
等调用的系统加载器知道如何执行加载混合模式.net程序集所需的操作。BTMemoryModule代码不执行这些特殊操作。
如果要从内存中加载这样的模块,您需要找到一个支持此类模块的库,或者编写自己的加载程序代码。坦率地说,我怀疑这样的图书馆是否存在。更实际地说,您应该从磁盘加载DLL。
https://stackoverflow.com/questions/33520165
复制相似问题