动态库是用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] lovebingye(降龙) 说
delphi的long是32位的,而.net的long是64位的,应该是这个原因,所以你应该显示的声明
int32,int16来匹配delphi的long和int请问具体怎么显示的声明int32,int16来匹配delphi的long和int啊?
小弟雪地跪求了 头大啊
我的加载定义是[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] lovebingye(降龙) 说
delphi的long是32位的,而.net的long是64位的,应该是这个原因,所以你应该显示的声明
int32,int16来匹配delphi的long和int请问具体怎么显示的声明int32,int16来匹配delphi的long和int啊?
小弟雪地跪求了 头大啊
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货