动态库中是否使用了与delphi不匹配的数据类型另外Delphi调用c++写动态库时建议最好使用静态调用。

解决方案 »

  1.   

    在C++中的LPCTSTR的数据类型我变为PANSICHAR,UNSIGNED CHAR变为CHAR,CHAR的也为CHAR,UNSIGNED LONG*的变为CARDINAL的指针型,UNSIGNED CHAR*变为PCHAR,其中指针是这样定义的pointercardinal=^cardinal;
    sm_id: pointercardinal;
    fcs:pchar;
    这样能行吗?
      

  2.   

    在C++中的LPCTSTR的数据类型我变为PANSICHAR,UNSIGNED CHAR变为CHAR,CHAR的也为CHAR,UNSIGNED LONG*的变为CARDINAL的指针型,UNSIGNED CHAR*变为PCHAR,其中指针是这样定义的pointercardinal=^cardinal;
    sm_id: pointercardinal;
    fcs:pchar;
      

  3.   

    在C++中的LPCTSTR的数据类型我变为PANSICHAR,UNSIGNED CHAR变为CHAR,CHAR的也为CHAR,UNSIGNED LONG*的变为CARDINAL的指针型,UNSIGNED CHAR*变为PCHAR,其中指针是这样定义的pointercardinal=^cardinal;
    sm_id: pointercardinal;
    fcs:pchar;
      

  4.   

    看看这篇文章:
    http://wangxd.51.net/htmlfile/vcdelphi.htm
      

  5.   

    to crob:那您有什么建议啊!
      

  6.   


    参数类型好像没问题。你调用的c++函数的传参顺序你注意了吗? stdcall;关键字使用了吗?
      

  7.   

    @SubmitA:= GetProcAddress(LibHandle, 'SubmitA');       //加载发送函数
         if not (@SubmitA = nil) then
         begin
             sret:=SubmitA('2','1',orgaddr,'2','1',destaddr,pri,'0','0','0','0',dcs,'0',schedule,expire,Default_ID,'0',udlen,userdata,sm_id,fcs); 
    程序就在调用sret:=SubmitA('2','1',orgaddr,'2',……时出现异常,但是我已经成功调用该动态库中的其它函数了,请高手指教啊!
                                      
      

  8.   

    int WINAPI SubmitA(unsigned char OrgTON, unsigned char OrgNPI, LPCTSTR OrgAddr, unsigned char DestTON, unsigned char DestNPI, LPCTSTR DestAddr, unsigned char PRI, unsigned char RD, unsigned char RP, unsigned char SRR, unsigned char MR, unsigned char DCS, unsigned char PID, LPCTSTR Schedule, LPCTSTR Expire, unsigned long Default_ID, unsigned char UDHI, unsigned long UDLen, LPCTSTR UserData, unsigned long* SM_ID, unsigned char* FCS);
    这是C的原函数声明!
    大家出主意啊,!我的日子不好过啊!
      

  9.   

    TSubmitA=function(orgton:char;orgnpi:char;orgaddr:lpctstr;destton:char;destnpi:char;destaddr:lpctstr;pri:char;rd:char;rp:char;srr:char;mr:char;dcs:char;pid:char;schedule:lpctstr;expire:lpctstr;default_id:cardinal;udhi:char;unlen:cardinal;userdate:lpctstr;sm_id:pointercardinal;fcs:pchar):integer;stdcall;
    我在DELPHI中的函数原形!