Я успешно вызываю функцию в DLL из Inno Setup, однако по возвращении я получаю ошибку времени выполнения ... Исключение: нарушение доступа по адресу 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;
Нет проблем, если я изменю функцию, чтобы не принимать параметр. Это по-прежнему происходит, если я изменяю его на один целочисленный параметр или объявляю его как функцию и заменяю функцию на пустую функцию с целочисленным параметром.
Вызванная функция ничего не делает, кроме как возвращает:
__declspec(dllexport) int CompleteInstall(char* szInstallPath)
{
//AfxMessageBox ("Got here" /*szInstallPath*/, MB_OK);
return 1;
}