请教:PB 如何声明调用delphi写的dll
最近做医院接口,他们的dll是用delphi写的,如下:
b.Init(AIniDir: pChar):integer;
参数为pcahr类型,返回值为整型
我在pb这样声明:
FUNCTION integer Init ( string AIniDir ) library "hisinterface.dll"
调用代码如下:
int ls_connect
string AIniDir
AIniDir=space(256)
AIniDir="E:\HIS测试\"
ls_connect=Init(AIniDir)
在调用的时候就报错了:
ls_connect=Init(AIniDir),这句报错了
错误信息是:bad runtime function reference ,请各位帮我分析一下
[解决办法]
FUNCTION long Init ( ref string AIniDir ) library "hisinterface.dll"
[解决办法]
b. Init(AIniDir: pChar):integer;
参数为pcahr类型,返回值为整型
我在pb这样声明:
FUNCTION integer Init ( string AIniDir ) library "hisinterface.dll"
调用代码如下:
int ls_connect
string AIniDir
AIniDir=space(256)
AIniDir="E:\HIS测试\"
ls_connect=Init(AIniDir)
问题: AIniDir 提供接口方是否为输出;
如果不是输出 就不用ref 了否则要ref 和space(100)
只是输入就直接 ls_connect=Init(="E:\HIS测试\")
这样就可以了
[解决办法]
Init(AIniDir: pChar):integer
pChar是等同于pb的字符串,问题是,它是ansi的单字节字符串,以\0作为结束。
pb10以下,应该传入string没问题。10以上要使用string()函数转换为ansi编码的吧。因为10以上是unicode。