当前位置: 代码迷 >> PB >> 怎么把C#中声明的DLL部分的语法改为PB
  详细解决方案

怎么把C#中声明的DLL部分的语法改为PB

热度:6   发布时间:2016-04-29 08:32:46.0
如何把C#中声明的DLL部分的语法改为PB?
C#中如下:
[DllImport("libxl.dll", CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Unicode)]
private static extern IntPtr xlBookAddSheet(IntPtr handle, string name, IntPtr initSheet);
我在PB中这样引用的:
public function ulong addsheet(ulong hwb,string sheetname,ulong sheetid) library "libxl.dll" alias for "xlBookAddSheetA"
但运行时报异常:
Specified argument type differs from required argument type at runtime in DLL function name
"指定的参数类型与动态链接库中的函数所需要的参数类型不一致"



------解决方案--------------------
intptr 换成 ref string
或者
global type intptr from structure
ulong attributes
end type
------解决方案--------------------
这个dll pb没法调用,你看申明CallingConvention=CallingConvention.Cdecl, CharSet=CharSet.Unicode)
这个调用规则是cdecl,只有stdcall的才行
  相关解决方案