动态库是用DELPHI/pascal编写的  
我的加载定义是[DllImport("TerAccDll.dll",  EntryPoint="GetBufData",CharSet=CharSet.Auto,CallingConvention=CallingConvention.ThisCall)]  public  static  extern  int  GetBufData  (long  idx,char*  p1,int  TerNo,int  Port);    动态库里的调用函数
 function GetBufData (
idx:Longint;   //待读取的交易记录号
p1:PChar;   //返回读取的数据
TerNo:integer;  //终端机号
Port:integer =1   //串口号  ):integer; 
TerAccDll是动态库  GetBufData  是要调用的函数  
CallingConvention我用的是ThisCall    结果idx传入到函数内部就不正确了  ,后面的TerNo    Port      传递是正确的  
 
如果  CallingConvention属性我用StdCall  结果idx的传递是正确的  
TerNo    Port      的值传递就不正确了    
 
动态库TerAccDll.dll  加上有stdcall标示  
 
请问怎么回事?  请兄弟们帮分析下 问题出在哪的可能性比较大? 谢谢了觉得我没说清楚的加我的qq12940139   或者MSN:   [email protected] 

解决方案 »

  1.   

    delphi的long是32位的,而.net的long是64位的,应该是这个原因,所以你应该显示的声明
    int32,int16来匹配delphi的long和int
      

  2.   

    TO:  lovebingye(降龙) ( ) 信誉:100 
         delphi的long是32位的,而.net的long是64位的,应该是这个原因,所以你应该显示的声明
         int32,int16来匹配delphi的long和int具体怎么声明啊? 现在一头的糨糊
      

  3.   

    加一下 我的MSN 或QQ好吗 好急