Я использую C dll в программе Delphi XE2 без проблем.Одна из функций DLL принимает функцию в качестве аргумента.
Вот прототип функции:
var
LMX_MySetOption: function(LmxHandle: LMX_HANDLE;
eOption: _LMX_SETTINGS;
callback: TCallBackProcedure): LMX_STATUS cdecl
{$IFDEF WIN32} stdcall {$ENDIF};
Первоначальный прототип функции C был:
LMX_STATUS LMX_SetOption(LMX_HANDLE LmxHandle, LMX_SETTINGS eOption,
const void *pSetting);
TCallBackProcedure определяется следующим образом:
type
TCallBackProcedure = procedure(bla : Pointer) stdcall;
Я вызываю функцию следующим образом:
LMX_MySetOption(LmxHandle, LMX_OPT_HEARTBEAT_EXIT_FUNCTION, UserExitRoutine);
UserExitRoutine определяется следующим образом:
procedure UserExitRoutine(bla : Pointer) stdcall;
begin
...
end;
Не работает (нарушение прав доступа) Я не могу изменить Cll.
Большое спасибо за любую идею!