Inno setup &引用;访问违规”;在DLL中调用外部函数时出错(在unzipper.DLL中解压缩)

Inno setup &引用;访问违规”;在DLL中调用外部函数时出错(在unzipper.DLL中解压缩),inno-setup,pascalscript,Inno Setup,Pascalscript,我正在尝试使用联机的.dll文件解压文件,但是每当我从代码部分调用“提取我”过程时,我都会收到以下错误: 例外情况: 地址025DA648处的访问冲突。读取地址00000000 程序: 过程解压(src,目标:AnsiString); 外部的unzip@files:unzipper.dll cdecl delayload'; 程序提取器(src,目标:AnsiString); 开始 解压(ExpandConstant(src),ExpandConstant(target)); 结束; 从cod

我正在尝试使用联机的
.dll
文件解压文件,但是每当我从代码部分调用“提取我”过程时,我都会收到以下错误:

例外情况:
地址025DA648处的访问冲突。读取地址00000000

程序:

过程解压(src,目标:AnsiString);
外部的unzip@files:unzipper.dll cdecl delayload';
程序提取器(src,目标:AnsiString);
开始
解压(ExpandConstant(src),ExpandConstant(target));
结束;
code
部分调用:

过程UnzipFiles();
变量
NSSMPath:string;
目标:AnsiString;
开始
NSSMPath:=ExpandConstant('{src}\..\nssm-2.24.zip');
目标:=“C:\files”;
开始
//解压文件前检查文件是否存在以节省时间。
//NSSM
如果没有(FileExists('C:\files\nssm-2.24')),则
开始
ExtractMe(NSSMPath,目标)
结束;
结束;
结束;

解压
必须声明为
stdcall
,而不是
cdecl
。只需使用
UnzipExample.iss中的声明即可:

过程解压(src,目标:AnsiString);
外部的unzip@files:unzipper.dll stdcall delayload';

解压
必须声明为
stdcall
,而不是
cdecl
。只需使用
UnzipExample.iss中的声明即可:

过程解压(src,目标:AnsiString);
外部的unzip@files:unzipper.dll stdcall delayload';

Get a working.dll?如果我使用源代码“{src}\..\nssm-2.24.zip”,它就可以工作了;DestDir:“{app}”;安装后:运行部分中的ExtractMe('C:\eltfiles\nssm-2.24.zip','C:\eltfiles'),但是我试图删除DestDir中的额外.zip文件。错误是否表明.dll有故障?如果是这样的话,您是否介意将我引向一个可以了解更多信息的web资源?首先,向我们展示一个真实的代码。您发布的代码甚至不会编译,因为您在
解压文件中有一个未定义的变量
target
。我编辑了代码。获取一个可工作的.dll?如果我使用源代码:“{src}\..\nssm-2.24.zip”,它确实可以工作;DestDir:“{app}”;安装后:运行部分中的ExtractMe('C:\eltfiles\nssm-2.24.zip','C:\eltfiles'),但是我试图删除DestDir中的额外.zip文件。错误是否表明.dll有故障?如果是这样的话,您是否介意将我引向一个可以了解更多信息的web资源?首先,向我们展示一个真实的代码。您发布的代码甚至不会编译,因为在
解压文件
中有一个未定义的变量
target
。我编辑了代码。但是,只有当我在[files]部分指定要解压的文件时,这似乎才行得通,例如:Source:“{src}\\ apache-tomcat-7.0.69.zip”;DestDir:“{app}”;安装后:ExtractMe('C:\files\apache-tomcat-7.0.69.zip','C:\files'),如果我尝试仅调用代码部分中的ExtractMe方法,则会继续出现此错误。但是它现在对我来说已经足够了,谢谢。你甚至在之前就写过它在
安装后对你有效(顺便说一句,这没有什么意义)。只有当我在[files]部分指定要解压缩的文件时,这似乎才行得通,例如:Source:“{src}\\ apache-tomcat-7.0.69.zip”;DestDir:“{app}”;安装后:ExtractMe('C:\files\apache-tomcat-7.0.69.zip','C:\files'),如果我尝试仅调用代码部分中的ExtractMe方法,则会继续出现此错误。但是它现在对我来说已经足够了,谢谢。你写过它在
后安装时对你有效(顺便说一句,这是没有意义的)。