gpt4 book ai didi

visual-c++ - 在 Inno Setup 中调用带参数的 dll 函数时出现运行时异常

转载 作者:行者123 更新时间:2023-12-04 13:55:59 30 4
gpt4 key购买 nike

我从 Inno Setup 成功调用了 DLL 中的函数,但是在返回时出现运行时错误...异常:地址 XXXXXXX 处的访问冲突。写地址 XXXXXX。

该函数声明为:

function CompleteInstall(szIntallPath: String) :  Integer;
external 'CompleteInstall@files:InstallHelper.dll stdcall setuponly';

并称:
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then begin
CompleteInstall('Parm1'); // ExpandConstant('{app}')
end;
end;

如果我将函数更改为不带参数,则没有问题。如果我将其更改为采用单个整数参数或将其声明为函数并将该函数更改为带有整数参数的 void 函数,它仍然会发生。

被调用的函数除了返回什么都不做:
__declspec(dllexport) int CompleteInstall(char* szInstallPath)
{
//AfxMessageBox ("Got here" /*szInstallPath*/, MB_OK);
return 1;
}

最佳答案

您的调用约定不匹配。要么让DLL函数使用stdcall还有:

__declspec(dllexport) __stdcall int CompleteInstall(char* szInstallPath)
{
//AfxMessageBox ("Got here" /*szInstallPath*/, MB_OK);
return 1;
}

或更改函数声明以使用 cdecl而不是 stdcall :
function CompleteInstall(szIntallPath: String) : Integer;
external 'CompleteInstall@files:InstallHelper.dll cdecl setuponly';

关于visual-c++ - 在 Inno Setup 中调用带参数的 dll 函数时出现运行时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/957070/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com