私は問題なくデルファイXE2プログラムでC DLLを使用しています。 DLL関数の1つが引数としての関数を取ります。ここ C DLLでデルファイコールバック関数を使用
は、関数のプロトタイプである:
var
LMX_MySetOption: function(LmxHandle: LMX_HANDLE;
eOption: _LMX_SETTINGS;
callback: TCallBackProcedure): LMX_STATUS cdecl
{$IFDEF WIN32} stdcall {$ENDIF};
関数のCの元のプロトタイプであった:
type
TCallBackProcedure = procedure(bla : Pointer) stdcall;
I:
LMX_STATUS LMX_SetOption(LMX_HANDLE LmxHandle, LMX_SETTINGS eOption,
const void *pSetting);
TCallBackProcedureは、以下のように定義されます。このように関数を呼び出す:
LMX_MySetOption(LmxHandle, LMX_OPT_HEARTBEAT_EXIT_FUNCTION, UserExitRoutine);
UserExitRoutineは以下の通りですdefinede:
procedure UserExitRoutine(bla : Pointer) stdcall;
begin
...
end;
私がC DLLを変更することはできません(アクセス違反) を働いていません。
何か考えてくれてありがとうございました!
をこの
を宣言することができますTCallbackProcedure'と 'const void * pSetting'は一致しないようです。 –