关于Delphi调用VC动态链接库的有关问题

关于Delphi调用VC动态链接库的问题
用Delphi调用VC的动态链接库,在VC中的函数定义是这样:

ZMQ_EXPORT int zmq_poll (zmq_pollitem_t *items, int nitems, long timeout);

我在Delphi中是这样翻译的:
type
 function zmq_poll(items:zmq_pollitem_tp;nitems:Integer;timeout:longint):Integer;cdecl;
implementation
function zmq_poll;external'libzmq.dll'name'zmq_poll';

是这样调用的:
zmq_poll(items,2,-1);

结果报错:
[Pascal Error] Project1.dpr(39): E2066 Missing operator or semicolon


请问这大概是什么问题啊?我看着程序好像没有问题


------解决方案--------------------
缺少操作符或者分号

基本语法问题。。。
------解决方案--------------------
longint是无符号整型
------解决方案--------------------
或者看下zmq_pollitem_tp你是怎么定义的?
------解决方案--------------------
应该是将DLL的语法"标准化"才行
------解决方案--------------------
第一:
结构体不要加packed,你先看看.h文件中设置的对齐是多少.如果没设,你也不用加.VC和Delphi不设默认对齐一样.
如果他设置了对齐,你就用{$A4 +}(4是对齐的数字)指令对齐.
第二:
zmq_poll函数的调用约定,VC中调用约定可以再函数前加,也可以不加,在.DEF文件中定义.
你看它的宏ZMQ_EXPORT中如果没有调用约定定义,不存在.DEF文件,或者.DEF文件中没定义zmq_poll的约定,那么你定义的cdcel就没错.否则根据它的定义改一下.