如何从32位应用程序注册64位dll(在64位操作系统上)

sma*_*ins 3 delphi 64-bit

我目前使用以下函数来注册处理上下文菜单调用的DLL.

function RegisterLibrary(szLibrary: String): Integer;
var
  hLib: THandle;
  drs: TDllRegisterServer;
begin
  // Attempt to load the library
  hLib := LoadLibrary(PChar(szLibrary));

  // Handle check
  if IsHandle(hLib) then
  begin // Get the register function
    @drs := GetProcAddress(hLib, LIB_REGISTER);

    if Assigned(@drs)
      then Result := drs            // Make the function call
      else Result := GetLastError;  // Return last error

    // Unload the library
    FreeLibrary(hLib);
  end else
    Result := GetLastError; // Return last error
end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,当尝试从我的32位应用程序注册64位dll时,它不起作用.

有没有办法从我的32位应用程序(用Delphi编译)注册我的64位dll(用free pascal编译)?

我想我可以调用C:\ Windows\system\regsvr32.exe"/ s"filename"但想知道我是否还有其他选择.

谢谢!

Lar*_*ens 7

不,32位进程无法加载64位dll.您必须调用64位进程来为您注册dll.