다름이 아니오라... dll에 선언된 함수를 델파이에서 선언해야 되는데
void*형으로 잡혀져 있어요... 델파이에서는 Structure루 넘겨줘야 하거덩요
그래서 구조체는 선언을 해줬는데...
이거하구 함수 선언부 하구 안맞는다구 에러가 나네...
쩌비...
C++에 선언된 함수는
query (void* query, size_t query_size, void* answer, size_t answer_size, , txstat_t* txstat)
이루쿠룸 생겼구.....
나는 이고를
unit Usedll;
interface
type
TMyStr = Record
end;
function query(query : TMyStr ; query_size : integer; answer : TMyStr ; answer_size : integer; txstat : TMyStr) : integer; stdcall ;
implementation
function query(query : TMyStr ; query_size : integer; answer : TMyStr ; answer_size : integer; txstat : TMyStr) : integer; stdcall ;external 'omkapidll.dll';
end.
요로케 선언해 줬어요...
이걸 콜할때는
procedure TForm2.FormCreate(Sender: TObject);
type
Tr_Code_t = record
class_s : array[1..2] of Char;
type_c : char ;
number_n : short;
end;
Proc_user_t = record
baranch_s : array[1..3] of char;
ip_addr_s : String[15] ;//array[1..15] of char;
user_s : String[8]//array[1..8] of char;
end;
Code_item_t = record
codeId_s : array[1..20] of char ;
codevalue : array[1..80] of char ;
end;
Query_t = record
Tr_Code: Tr_Code_t;
Proc_user : Proc_user_t ;
segment_number_n : short ;
codeClassId_s : String[20]//array[1..20] of char ;
end;
Answer_t = record
Tr_Code: Tr_Code_t;
codeClassId_s : array[1..20] of char;
segment_number_n : short ;
items_n : short;
item : array[1..50] of code_item_t ;
end;
txstat = record
tt_id : Integer ;
tt_seq : Integer ;
ss : array[1..100] of char ;
end;
var
rtn : integer ;
snd : Query_t;
ans : Answer_t ;
begin
//소득자코드 comboBox 채우기
snd.Tr_Code.class_s := 'CD';
snd.Tr_Code.type_c := 'Q' ;
snd.Tr_Code.number_n := 1001 ;
snd.Proc_user.baranch_s := '000' ;
snd.Proc_user.ip_addr_s := '192.168.0.19';
snd.Proc_user.user_s := 'jhur' ;
snd.segment_number_n := 1;
snd.codeClassId_s := 'INCOME' ;
rtn := query(^snd, sizeof(snd), ^ans, sizeof(ans), ^txstat );
근데... 에러가 나...TMyStr하구 Char 하구 Incompatible Type이래요...
함수선언에서... 변수타입을 뭘로 줘야 할까요.....