求救:Delphi中不能调用Dll(PB写的DLL)(运行环境win2000 P+Delphi 5.0)(200分)

  • 主题发起人 主题发起人 Xiaoxong
  • 开始时间 开始时间
X

Xiaoxong

Unregistered / Unconfirmed
GUEST, unregistred user!
大家帮忙看一下啊,在下不胜感激啊
源码:
Function func_test(Var InStr,InBz,OutStr:ShortString):ShortString;
type Lfunc1=Function (Var _InStr, _InBz , _OutStr:ShortString):ShortString;stdcall;
Var
Lib1:Thandle;
Lsfunc1 : Lfunc1;
begin

Lib1 := Loadlibrary('test.dll');
If Lib1 >= 32 then

begin

try
@Lsfunc1 :=GetProcAddress(Lib1 ,'_DataDown_sp@12');
if @Lsfunc1 <> nil then

Result := Lsfunc1(InStr,InBz,OutStr)
else

Result := '动态链接库加载错误';
finally
FreeLibrary(Lib1);
end;

end
else

begin

Result := '动态链接库加载错误';
end;

end;


不知道哪儿错了,执行时总提示地址出错

还有一个,Delphi5.0调用PB写的Dll有没有什么要特别注意的地方

分不够可以再加
 
首先没用过PB,但是凡是设计字符串的dll调用,都必须非常小心,必须用两种语言都能接受的兼容方式(比如PCHar)传递才能正确。所以最好能帖一下dll中函数参数的声明,请董PB的朋友指点一下。
 
請確保你用PB寫的.DLL有提供com接口。供delphi訪問。
 
PB不能编译标准dll,如果你想引用PB编写的DLL中某个函数,那是不可能的.
 
To :9903

那PB编写的DLL,VB能不能调用啊???

谢谢!!!!!!!!
 
如果装有PB虚拟机,delphi、vb等是可以调用PB写的Dll的。
PB写的dll中的头部即对外公开的部分是标准的。

虚拟机就是那些dll,放在搜索路径下即可。
 
另外,大小写千万注意!
 
To yeskert1,
我想问一下,上面我写的代码有没有问题??
还有我用VB写了一个调用PB DLL的程序,可以调用,
这样子是不是说明在这个环境下,已经有安装了PB的虚拟机了

谢谢!!!!!!!
 
用pb 向导生成.dll,
比较你的和他的有什么不同?

-------------------vc++ 同样
vc++ 你自己做的 .dll,其它语言 也是打不开的,解决办法,向导生成.dll,比较你的和他的有什么不同
-------------- delphi 同样
delphi 你自己做的 .dll,其它语言 也是打不开的,解决办法,向导生成.dll,比较你的和他的有什么不同
 
vb能调用说明虚拟机已经安装!
看来是
type Lfunc1=Function (Var _InStr, _InBz , _OutStr:ShortString):ShortString;stdcall;
这行有问题。

ShortString改成pchar可能就行了!
 
问下,delphi写的ocx,在pb中为什么有问题
 
不可能调用不了,除非两种语言的定义有冲突!产生什么错误?挎过来分享一下.
 
你查看一下,是否是DLL文件名的原因,这可能是一个关键字.
 
谢谢大家,已经搞定。
 
谢谢大家,已经搞定。
 
谢谢大家,已经搞定。
 
后退
顶部