如何导入两个同名的DLL(x86和x64)?

如何导入两个同名的DLL(x86和x64)?,dll,inno-setup,32bit-64bit,pascalscript,Dll,Inno Setup,32bit 64bit,Pascalscript,当我从两个DLL(一个用于32位,另一个用于64位)导入一个函数时,我得到一个错误,有没有办法做到这一点 我尝试的代码是: 函数DriverPackageInstallW(DriverPackageInfPath:Integer;Flags:Cardinal;pInstallerInfo:AnsiString;pneedroop:Boolean):Cardinal; 外部的DriverPackageInstallW@files:difxapi_x86.dll'; 函数DriverPackageI

当我从两个DLL(一个用于32位,另一个用于64位)导入一个函数时,我得到一个错误,有没有办法做到这一点

我尝试的代码是:

函数DriverPackageInstallW(DriverPackageInfPath:Integer;Flags:Cardinal;pInstallerInfo:AnsiString;pneedroop:Boolean):Cardinal; 外部的DriverPackageInstallW@files:difxapi_x86.dll'; 函数DriverPackageInstallW(DriverPackageInfPath:Integer;标志:Cardinal;pInstallerInfo:AnsiString;pneedroop:Boolean):Cardinal; 外部的DriverPackageInstallW@files:difxapi_x64.dll'; 我收到的错误是:

重复标识符“DRIVERPACKAGEINSTALLW”

回答您的字面问题:您可以将这些函数以不同的名称导入Inno Setup/Pascal脚本

函数DriverPackageInstallW_32(DriverPackageInfPath:Integer;Flags:Cardinal;pInstallerInfo:AnsiString;pneedroop:Boolean):Cardinal; 外部的DriverPackageInstallW@files:difxapi_x86.dll'; 函数DriverPackageInstallW_64(DriverPackageInfPath:Integer;Flags:Cardinal;pInstallerInfo:AnsiString;pneedroop:Boolean):Cardinal; 外部的DriverPackageInstallW@files:difxapi_x64.dll';
但是无法将64位DLL加载到32位Inno安装进程中。这是行不通的

通常,不能在一个进程中混合使用32位和64位代码



如果需要在Inno安装程序(或任何32位应用程序)中调用64位DLL,则必须引入加载和调用DLL的帮助程序64位EXE。您可以在Inno安装程序中执行该helper EXE。

Martin,感谢您的澄清,我会尝试一下,我只是担心UAC(用户帐户控制)可能会在安装过程中出现两次。不,不应该出现。从已提升的应用程序运行应用程序时,不再需要UAC。