pls建议如何从C / C ++的内存中加载64位DLL, 我正在运行Windows 64位模式,我发现一些解决方案 Win32,但无法在64位上正常工作
我不想创建任何临时文件,我想拥有 将所有req DLL放入单个.bin文件并延迟加载DLL 进入我的.exe程序
最欢迎链接和示例源!
谢谢
答案 0 :(得分:0)
您可以在运行时加载和执行内存中的代码,而无需任何临时文件。严格来说,它不是DLL,而只是动态代码。
您将需要与在运行时生成代码的程序所使用的API函数相同的功能(如今,许多语言都具有即时编译器)。
原则上,只有三个步骤:
VirtualProtect
完成的。在Linux上,mprotect
。FlushInstructionCache
。后两个项目符号将需要包含代码的缓冲区的基地址和大小。
更困难的是处理具有依赖关系的代码。由于您未使用OS加载程序,因此没有静态导入解析和修补程序。如果您的代码是针对这种情况而设计的(将指向主机应用程序数据的指针作为函数参数,并针对所有外部交互进行遍历),那么这不必是问题。但是,由于您在考虑DLL,因此很可能会。
仍然,这远不是一个无法解决的问题。首先,让位置无关的功能开始工作,然后再进行修正和导入。