DLL文件名:join.dll
以下是头文件join.h中这个函数的原型函数原型
int cmpp_login(conn_desc *conn,cmppe_login *cl);其中conn_desc 定义如下:
ttypedef struct conn_desc conn_desc;
struct conn_desc{
dpl_socket_t sock;
unsigned long seq;
int status;
char act_flag;
};cmppe_login 定义如下:
struct cmppe_login{
char icp_id[CMPPE_MAX_ICP_ID_LEN+1];
char icp_auth[CMPPE_AUTH_LEN+1];
dpl_uint8_t icp_bind_type;
dpl_uint8_t if_version;
dpl_uint32_t icp_timestamp;
};

解决方案 »

  1.   

    类型无所谓,我就是不知道这种结构类型的参数在DELPHI里怎么申明和传入调用
      

  2.   

    不是说DELPHI可以调用的吗?
    =========================
    可以,但数据类型有限定
      

  3.   

    楼上的意思是说结构类型的参数在DELPHI里是无法传入喽?
      

  4.   

    int cmpp_login(conn_desc *conn,cmppe_login *cl);其中conn_desc 定义如下:
    ttypedef struct conn_desc conn_desc;
    struct conn_desc{
    dpl_socket_t sock;
    unsigned long seq;
    int status;
    char act_flag;
    };cmppe_login 定义如下:
    struct cmppe_login{
    char icp_id[CMPPE_MAX_ICP_ID_LEN+1];
    char icp_auth[CMPPE_AUTH_LEN+1];
    dpl_uint8_t icp_bind_type;
    dpl_uint8_t if_version;
    dpl_uint32_t icp_timestamp;
    };conn_desc = record
    sock,
    seq,
    status: Integer;
    act_flag: char;
    end;cmppe_login = record
      icp_id : array [1..CMPPE_MAX_ICP_ID_LEN+1] of char;
      cp_auth : array [1..CMPPE_AUTH_LEN+1] of char;
      icp_bin_typ, if_version: char;//dpl_uint8_t不知道是什么类型,看样子好像是8位的
      icp_timestamp: Integer; //估计是32位,你自己的程序,自己看好大小
    end;
    function cmpp_login(var conn_desc conn;var cmppe_login cl):Integer;cdecl;
    {
      注意: c和delphi中或许结构体的对齐方式不一致,如果实在不行,可以直接用指针移位的办法来取参数
      参数入栈也有别,保证一致即可,vc编译出来的引出函数如果不加extern "C"会出现很奇怪的名字
      
      总之,3点保证: 结构体一致,参数入栈方式一致,名字一致即可调用
    }