当我从两个DLL(一个用于32位,另一个用于64位(导入函数时,我会得到一个错误,有办法做到这一点吗?
我尝试的代码是:
function DriverPackageInstallW(DriverPackageInfPath: Integer; Flags: Cardinal; pInstallerInfo: AnsiString ; pNeedReboot: Boolean): Cardinal;
external 'DriverPackageInstallW@files:difxapi_x86.dll';
function DriverPackageInstallW(DriverPackageInfPath: Integer; Flags: Cardinal; pInstallerInfo: AnsiString ; pNeedReboot: Boolean): Cardinal;
external 'DriverPackageInstallW@files:difxapi_x64.dll';
我收到的错误是:
重复标识符"DRIVERPACGEINSSTALLW">
要回答您的文字问题:您可以将这些函数以不同的名称导入到Inno Setup/Pascal Script中。
function DriverPackageInstallW_32(DriverPackageInfPath: Integer; Flags: Cardinal; pInstallerInfo: AnsiString ; pNeedReboot: Boolean): Cardinal;
external 'DriverPackageInstallW@files:difxapi_x86.dll';
function DriverPackageInstallW_64(DriverPackageInfPath: Integer; Flags: Cardinal; pInstallerInfo: AnsiString ; pNeedReboot: Boolean): Cardinal;
external 'DriverPackageInstallW@files:difxapi_x64.dll';
但是您无法将64位DLL加载到32位Inno Setup进程中。这是行不通的。
一般来说,您不能在一个进程中混合使用32位和64位代码。
如果您需要在Inno Setup(或任何32位应用程序(中调用64位DLL,则必须引入一个加载和调用DLL的助手64位EXE。您可以在Inno Setup中执行该助手EXE。