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

当我从两个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';

我收到的错误是:

  

重复的标识符“ DRIVERPACKAGEINSTALLW”

gongchen10 回答:如何导入两个具有相同名称的DLL(x86和x64)?

要回答您的文字问题:您可以将这些功能以其他名称导入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。

本文链接:https://www.f2er.com/3156506.html

大家都在问