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

问题描述 投票:2回答:1

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

dll inno-setup 32bit-64bit pascalscript
1个回答
3
投票

回答您的[[文字问题:您可以将这些功能以不同的名称导入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。
© www.soinside.com 2019 - 2024. All rights reserved.