Inno Setup 5.5.4(a)在Windows 7下出现错误“无法导入dll”
我需要用几个dll来做一个serup应用程序:在pas-script中,使用compinstkey.dll来调用aspr_ide.dll。 我在iss-script中做过:
[Files]
Source: aspr_ide.dll; DestDir: {app};Flags: ignoreversion
Source: CompInstKey.dll; DestDir: {app}; Flags: ignoreversion
....
[Code]
....
function GetRegistrationKeys: PAnsiChar;
external 'GetRegistrationKeys@files:aspr_ide.dll stdcall';
procedure Installinfo(ApplicationName, Version, UserName, Key: PAnsiChar);
external 'Installinfo@files:CompInstKey.dll stdcall';
....
function InitializeSetup: Boolean;
begin
Result := False;
ExtractTemporaryFile('aspr_ide.dll');
ExtractTemporaryFile('CompInstKey.dll');
end;
.....
在Windows XP中它工作正常,但Windows7确实会抛出错误“无法导入dll:C:... Temp tp.GHPtmp aspr_ide.dll”。 在暂停安装时,aspr_ide.dll存在于“C:... Temp tp.GHPtmp ”中。
我错了什么? 为什么不在Windows 7下运行? 我该如何纠正它?
你应该在函数声明中使用delayload
关键字,如:
function GetRegistrationKeys: PAnsiChar;
external 'GetRegistrationKeys@files:aspr_ide.dll stdcall delayload';
procedure Installinfo(ApplicationName, Version, UserName, Key: PAnsiChar);
external 'Installinfo@files:CompInstKey.dll stdcall delayload';
如http://www.jrsoftware.org/ishelp/index.php?topic=scriptdll中所述,延迟加载导致安装程序仅在调用DLL时才加载DLL,而不是在启动时加载。
链接地址: http://www.djcxy.com/p/7747.html上一篇: Inno Setup 5.5.4(a) under Windows 7 with mistake "cannot import dll"
下一篇: Handle DLL search with two similar Windows applications