Я пытаюсь создать DLL, которая позже будет использоваться в Inno Setup.Мне удалось создать DLL с использованием Pelles в качестве IDE со следующим кодом:
#include <windows.h>
__declspec(dllexport) int sumT(){
return 2;
}
Затем я вызываю сопоставление DLL с функцией в Inno Setup, используя следующий код Delphi:
function Hellow() : Integer ;
external 'sumT@files:yyy.dll stdcall';
Он работает, как и ожидалось, возвращает 2. Я также могу вызвать его из rundll32.exe - если я добавлю MsgBox в DLL, он появится, доказывая, что все работает как положено.
Теперьпроблема начинается, когда я пытаюсь передать значение в DLL, например:
#include <windows.h>
__declspec(dllexport) int sumT(int sumTah){
return sumTah;
}
Он перестает работать!В Inno Setup я выдаю сообщение:
«Ошибка времени выполнения (при -1: 0)»
И если я попробую rundll32.exe, я получу:
Ошибка в yyy.dll
Отсутствует запись: sumT
Я не собираюсь вставлять сюда код Delphi, потому что практически все перепробовалТо же самое с кодом C, я попытался использовать вместо этого __stdcall, объявив аргумент как INT, UINT ... и другие вещи, которые я забыл.
Я также посмотрел MSDN, но не смог найти ничего, относящегося кэта конкретная проблема.
Итак, кто-нибудь может помочь?
Спасибо
РЕДАКТИРОВАТЬ: я компилирую в C, поэтому нет необходимости для "extern".