C로 짜여진 DLL을 사용하려고 하는데, 델파이에서는 이중 포인터를 어떻게 쓰는지 몰라서
상당한 애를 먹고 있네요.
C함수 원형은 아래와 같습니다.
typedef usigned int *TaskHandle;
int CreateTask (unsigned char name[], TaskHandle * taskHandle);
int StopTask (TaskHandle taskHandle);
위의 함수를 델파이에서 아래와 같이 선언하고 사용했습니다.
type
pUInt = ^Cardinal;
ppUInt = ^pUint;
Create = function (name:PChar; taskHandle:ppUInt);
Stop = function (taskHandle:pUInt);
..
.
.
var
hTask : pUInt;
.
.
begin
..
Create ('', @hTask);
.
.
.
Stop (hTask);
이렇게 하면 이중 포인터로 제대로 넘어 갈줄 알았는데, 안되는 군요.
델파이에서는 이중 포인터를 어떻게 사용해야 합니까?
TaskHandle 을 어떻게 델파이에서 정의 해야 할지 알려주셨으면 합니다.
좋은 답변 부탁 드리겠습니다.
함수 인자전달 문제인듯합니다.(Calling conventions)
C함수와 파스칼함수는 함수에 인자를 전달할때 다른방법을 사용합니다.
Create = function (name:PChar; taskHandle:ppUInt); cdecl;
Stop = function (taskHandle:pUInt); cdecl;
요렇게 해보세요.
포인터문제는 아닌듯 생각됩니다...