C写的dll中的函数如何调用 ( 积分: 50 )

  • 主题发起人 主题发起人 ycguser
  • 开始时间 开始时间
Y

ycguser

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在手中有C语言写的DLL和它的头文件以及LIB文件。
头文件中有它自己定义的数据格式如:
struct pixmap_t;
以及函数定义:
pixmap_t* pixmap_create(sint32 width, sint32 height, uint16 depth);
我想请问如何在Delphi中引用。如何在delphi中定义相对应的数据类型。
调用函数是不是从dll中导出来调用呢
没有分了,下回补上
 
我现在手中有C语言写的DLL和它的头文件以及LIB文件。
头文件中有它自己定义的数据格式如:
struct pixmap_t;
以及函数定义:
pixmap_t* pixmap_create(sint32 width, sint32 height, uint16 depth);
我想请问如何在Delphi中引用。如何在delphi中定义相对应的数据类型。
调用函数是不是从dll中导出来调用呢
没有分了,下回补上
 
type pixmap_t=packed record
.....
end;
Ppixmap_t=^pixmap_t;

function pixmap_create(width,height:integer;depth:word):Ppixmap_t;stdcall;external 'xxx.dll'
 
上面的没有问题,一般struct对应record,packed record 对应联合类型(记不住关键字了)

pixmap_t* pixmap_create(sint32 width, sint32 height, uint16 depth);

这里的*对应就是指针,要先在Delphi里面定义,
比如Char的指针类型就是
type
PChar = ^Char;

sint32 这些内容都是采用typedef定义出来的,就象我们定义了一个PChar一样,所以你要在C里面找到

;另外

http://www.delphibbs.com/delphibbs/dispq.asp?lid=2422011
这里包括了大部分的C和Delphi的类型对应关系和一般的转换办法,对你有帮助
 
后退
顶部