Исключение на этапе выполнения при вызове dll функционирует с параметром в Установке Inno

флажок для активации:

Редакторы / структурированные текстовые редакторы / теги задач => отметьте «Включить поиск тегов задач»

6
задан MaLKaV_eS 12 March 2013 в 10:22
поделиться

2 ответа

У вас несоответствие соглашения о вызовах. Либо заставьте функцию 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';
9
ответ дан 9 December 2019 в 22:39
поделиться

Хотя, согласно mghie (см. Комментарии), в этом случае это не должно иметь значения, вы можете использовать PChar вместо String так как это будет более точным эквивалентом объявления C char * .

String - это собственный тип Паскаля, который обычно управляется совершенно иначе, чем PChar (хотя, очевидно, не так много в Inno's PascalScript).

2
ответ дан 9 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: