2

我的程序在安装了 ISSkin 的计算机中安装良好。然后我尝试将我的程序安装在未安装 ISSkin 的另一台计算机上,安装时收到此消息:“运行时错误(在 -1:0):无法导入 dll:c:\Folder00\ISSkin.dll”。

我在网上搜索,但目前没有。我的 INNO 中有以下代码:

[Files]
Source: "c:\Folder00\ISSkin.dll"; DestDir: {tmp}; Flags: dontcopy; Attribs: hidden system

[Code] 
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@c:\Folder00\ISSkin.dll cdecl';

procedure UnloadSkin();
external 'UnloadSkin@c:\Folder00\ISSkin.dll cdecl'

我正在为 innosetup 使用 *.cjstyles 皮肤。我从 STDCALL 更改为 CDECL 但无济于事。有没有人遇到过这个问题以及如何解决?

4

1 回答 1

3

您正在将 dll 提取到临时文件中,但尝试从某些 'c:\folder00\' 中加载它,这很可能在目标计算机中不存在。

按照产品页面上的示例,你会没事的。链接示例中的相关部分:

[Files]
Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy
Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy    

[Code] 
procedure LoadSkin(lpszPath: String; lpszIniFileName: String); external 'LoadSkin@files:isskin.dll stdcall';

function InitializeSetup(): Boolean;
begin
  ExtractTemporaryFile('Office2007.cjstyles');
  LoadSkin(ExpandConstant('{tmp}\Office2007.cjstyles'), '');
  Result := True;
end; 
于 2012-09-10T23:14:46.433 回答