PB调用Dll的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 MarcusYin
  • 开始时间 开始时间
M

MarcusYin

Unregistered / Unconfirmed
GUEST, unregistred user!
我用delphi写了两个com组件,分别为a,b;其中b会被a调用
PB实现的系统调用a,经过我调试,程序跑到a调用b的地方就会报错,error calling external object
function xxxxx at line .....;
然而,delphi实现的系统同样调用a,跑到a调用b的地方就不会有什么问题。

请教大家是什么原因??谢谢了
 
我用delphi写了两个com组件,分别为a,b;其中b会被a调用
PB实现的系统调用a,经过我调试,程序跑到a调用b的地方就会报错,error calling external object
function xxxxx at line .....;
然而,delphi实现的系统同样调用a,跑到a调用b的地方就不会有什么问题。

请教大家是什么原因??谢谢了
 
a动态加载b试试
我前端时间也遇到一件怪事:
( http://www.delphibbs.com/delphibbs/dispq.asp?lid=3252548 )
PB应用 -> A.dll(Delphi开发) -> B.Dll(Delphi开发) -> C.Dll(TUXEDO的dll),程序关闭时出错,而Delphi开发的应用程序调用就没问题;后来修改B.dll使其动态调用C.dll(LoadLibrary)就没问题
 
你要将所有的DLL放在同一目录或搜索目录,然后同楼上所说
 
我在dll里方法的参数都是widestring,这样的声明会出问题么??
 
function StrXXXXX(sTarget:WideString;sKey:Widestring;bTrimIt:boolean=true):WideString;
var
oEncrypt:variant;
sResult:string;
begin
result:=Chr_Empty;
if bTrimIt then sTarget:=trim(sTarget);

oEncrypt:=CreateOleObject(Class_Encrypt);
oEncrypt.StrEncrypt(sTarget,sKey,ToInt(bTrimIt),sResult);

oEncrypt:=Empty;
result:=sResult;
end;
========================================
我这里用CreateOleObject,和LoadLibrary有什么不同么??
 
1、用pChar类型
2、设置环境变量 path,增加 a.dll所在的路径
 
我用PB写了个小程序跟进dll后发现,dll里的那个方法返回的是widestring类型的变量sReturn的值为'vtftdgUdwETFDeDG'#$14'0',但是我将这个值赋给pb程序界面上的一个文本框的text属性时,该text值居然为空,请问这是否是因为dll里的那个方法参数类型的问题呢??
 
xianguo,请教下,怎么将所有方法的参数类型由widestring或者string转换为pchar呢??没有晚过哇!!
 
谢谢各位了!
 
后退
顶部