我用PB 写了一个 com 组件,JAVAscript 调用,在本机 用 regsvr32 注册成功以后, 调用com组件里的函数正常,但换到别的机器上,注册成功了,但调用的时间提示: 不能创建对象,我以为是缺少 PB 的DLL 问题,把C:\Program Files\Sybase\Shared\PowerBuilder 这个目录下的 DLL 全部都拷贝到 ,com 组件所在的目录下了,可在别的机器上还是不行。
以下是javascript 代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<HTML> 
<HEAD> 
  <TITLE> New Document </TITLE> 
  </APPLET> 
  <META NAME="Generator" CONTENT="EditPlus"> 
  <META NAME="Author" CONTENT=""> 
  <META NAME="Keywords" CONTENT=""> 
  <META NAME="Description" CONTENT="">     <script language="javascript">   function Connect() 

var iRet = czjm_ylk.testmes(); } 
    </script> </HEAD> <BODY> 
  <INPUT TYPE="button" name = "testbutton" value = "测试调用 COM 组件" onclick = Connect(); > 
</BODY> 
<OBJECT id=czjm_ylk codebase="../../js/SLE300.CAB" style="LEFT: 0px; WIDTH: 0px; TOP: 0px; HEIGHT: 0px" 
classid=clsid:7ECBB0B1-34E6-4103-817E-B616ED53B10F> <PARAM NAME="_Version" VALUE="65536"> 
</HTML> 
以上是调用的代码,我在本机试都可以,换一台没有PB的机器就不行了。以为是缺少DLL的问题,把DLL复制过去还是不行,又用PB 写了一个调用 COM 组件的测试,在本机调用可以,在其它机器上调用也可以。以下是调用COM测试按钮下的代码: 
int result 
OLEObject myoleobject 
myoleobject = create OLEObject 
result = myoleobject.connecttonewobject('PB90.n_mypbcomapplicationname') if result = -2 then  //没有注册则注册dll       messagebox('提示','注册组件时出错,请于厂家联系') else 
  if result < 0 then 
        messagebox('提示','组件调用错误') 
  end if 
end if if result >=0 then 
myoleobject.testmes() 
    messagebox('提示','已找到组件,可以调用一下试!!!!!!!!!可以调试一下!!!') 
end if