Delphi 从内存加载64位Dll
时间: 2023-06-23 22:08:17 浏览: 69
要从内存加载64位DLL,可以使用以下步骤:
1. 使用 WinAPI 函数 `LoadLibraryEx` 加载DLL文件到内存中。
2. 使用 `GetProcAddress` 函数获取DLL中需要使用的函数的指针。
3. 使用获取到的函数指针调用DLL中的函数。
以下是一个简单的示例代码:
```
procedure LoadDllFromMemory(const DllData: TBytes);
var
ModuleHandle: HMODULE;
FuncPointer: Pointer;
begin
// 加载DLL到内存中
ModuleHandle := LoadLibraryEx(@DllData[0], 0, LOAD_LIBRARY_AS_DATAFILE or DONT_RESOLVE_DLL_REFERENCES);
if ModuleHandle <> 0 then
begin
try
// 获取需要使用的函数的指针
FuncPointer := GetProcAddress(ModuleHandle, 'FunctionName');
if Assigned(FuncPointer) then
begin
// 使用获取到的函数指针调用DLL中的函数
TMyFunction(FuncPointer)(MyParameter);
end;
finally
// 卸载DLL
FreeLibrary(ModuleHandle);
end;
end;
end;
```
其中 `DllData` 是一个 `TBytes` 类型的参数,包含要加载的DLL文件的二进制数据。`FunctionName` 是需要调用的DLL函数的名称。`TMyFunction` 是一个代表DLL函数声明的类型,`MyParameter` 是传递给DLL函数的参数。