如何用pb9.0调用pb9.0自己生成的dll文件,出错提示为:error : bad runtime function reference at line 5 in open event of object bbb

ppp9 2005-01-17 12:59:37
如何用pb9.0调用pb9.0自己生成的dll文件.解答正确给200分
aaa.dll 内容为:

公用函数为f_add a,b,c 为integer型

a=a*100
b=b*50
c= a + b
return 0


bbb调用内容:
声明:
FUNCTION INT f_add (int a,int b, ref int c) Library "aaa.DLL"
调用:
open事件中内容:
int a,b,c
a=100
b=200
c=0
f_add(a,b,c)
messagebox('',string(c))

并且也将aaa.dll做为pbl的样式加入到了bbb.pbt中.


调用时出现以下错:
出错提示为:error : bad runtime function reference at line 5 in open event of object bbb
...全文
1227 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
luotitan 2005-01-18
  • 打赏
  • 举报
回复
做成com并不复杂,特别是使用9。0的向导可以说相当简单了,就是每个机器上都要注册一下。
zhouweiwansui 2005-01-18
  • 打赏
  • 举报
回复
pb还是别做dll了
呵呵,接分先
luotitan 2005-01-18
  • 打赏
  • 举报
回复
1.首先新建一个工作区(workspace),再新建一个应用(target),然后在该pbl中新建一个custom class
2.在custom class中编写将要调用的成员函数,这个就不多说了。
3.新建project 选择com/mts/com+ component wizard ,给该project取一个名字(随意)
4.在下一步后选择将要生成com、mts组件的用户对象,打勾。
5.下一步,下一步,然后在secify com/mts server information 这个对话框中的component server appid 这一项单击new 生成一个id,同样的方法在下一个对话框中也生成一下(就是点击两次new)
6.在specify build options对话框中将register components upon successful build 打勾,进行注册,在下一步,ok,生成一个project
7.打开该project,再单击工具条上的properties,在library选项卡中,将需要包含的pbl选中
8.单击deploy生成组件

调用方法lzp_lrp(lzp)写的很清除了,就是注意ll_status = PBObject.ConnectToNewObject("PB90.n_pbclient_connectservice"),是pb90.customclassname,一切ok。
luotitan 2005-01-18
  • 打赏
  • 举报
回复
ok,我写一下,等
ppp9 2005-01-18
  • 打赏
  • 举报
回复
做成com并不复杂,特别是使用9。0的向导可以说相当简单了,能给一下具体方法吗一步一步的最好,我和jxf168将对解决问题的给我们的合计分220分,让我测试通过就给所有提出实质方法的参与者给分。
hygougou 2005-01-18
  • 打赏
  • 举报
回复
是生成com的写的函数代码里要用绝对路径
hygougou 2005-01-18
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3595/3595041.xml?temp=.2471887

com涉及文件路径的,调用要用绝对路径
li_d_s 2005-01-17
  • 打赏
  • 举报
回复
昏,做成com不是自找麻烦么?
lzheng2001 2005-01-17
  • 打赏
  • 举报
回复
老兄,pb写的DLL不能以API方式被其它程序调用的!因为它不是标准的DLL,帮助文件上已经说了! 把它做成COM方式就可以了
WorldMobile 2005-01-17
  • 打赏
  • 举报
回复
呵呵,可以用,就是通过COM来做

//引用狗狗的话

com写的可以,不过不是你那样的调用方法,看如下代码

OLEObject PBObject,PBNVObject

long ll_status
double ld_result
PBObject = CREATE OLEObject

//这里PB90.n_pbclient_connectservice是你生成的COM的ID号码
ll_status = PBObject.ConnectToNewObject("PB90.n_pbclient_connectservice")
IF li_rc < 0 THEN
DESTROY PBObject
MessageBox("Connecting to COM Object Failed", "Error: " + String(li_rc))
Return
END IF

注意:在别的机器上运行你的程序之前要注册你的COM组件(regsvr32 路径\*.dll),而且.idl和.dll要放到同一目录下


具体请参考
http://community.csdn.net/Expert/topic/3595/3595041.xml?temp=.2471887
li_d_s 2005-01-17
  • 打赏
  • 举报
回复
pb啥时候还有写dll的功能了?dll是自己的pbl编译出来的吧?
ppp9 2005-01-17
  • 打赏
  • 举报
回复
十万火急,如何用pb9.0调用pb9.0自己生成的dll文件

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧