pb调用vc编写的atl com组件失败

vistang 2014-08-14 10:58:34
我用vc编写了一个COM(ATL COM)组件,可以正常使用regsvr32注册成功,
使用c#以及Delphi也可以成功调用,
但是使用pb调用时候返回值为-2,提示找不到类,
我的pb版本为6.0,在9.0版本下试了下也不行,
但是点击broswer-》ole--》programmable objects可以看到该类的属性和方法,
我调用的代码是
int result
OLEObject myole
myole= create OLEObject
result=myole.connecttonewobject("MYTESTCOMLib.Hello")
messagebox("错误信息",result)

悉心向各位求教,
...全文
1576 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
my_aa 2014-08-20
  • 打赏
  • 举报
回复
看看VC6和高版本的字符集,VC6默认是ANSI,高版本是UNICODE,是不是这个原因造成?
vistang 2014-08-19
  • 打赏
  • 举报
回复
引用 8 楼 tonyu 的回复:
我也有类似的问题,别人做的COM,在CS下运行正常,在WS下运行出错,不知怎样解决
你这个应该是运行库的问题,环境不一样了吧
tonyu 2014-08-19
  • 打赏
  • 举报
回复
我也有类似的问题,别人做的COM,在CS下运行正常,在WS下运行出错,不知怎样解决
laoer_2002 2014-08-18
  • 打赏
  • 举报
回复
我也遇到过这样的问题,把代码移植到VC6下就可以,版本高的编译出来,pb不认识,也不明白为什么,可能是我自己功力不到
vistang 2014-08-17
  • 打赏
  • 举报
回复
引用 5 楼 my_aa 的回复:
C#,delphi调用的机器,跟你pb写的机器是不是同一台,不是的话,考虑下是不是缺少VC相关的dll,或在VC的编译选项设置为mt,还有Vs2012及以上编译的若需要XP上运行,那要选择VXX_XP
谢谢你的回复,我把代码移植到vc6 暂时解决问题了,至于为什么pb 调不了我还是不知道, 因为我在xp上测试时,delphi和c# 都是可以调用的,但是pb不可以,现在用vc6倒是都可以了,而且不需要 vc2012的运行库了(之前打包我还特意打包进去检查安装环境了)。
my_aa 2014-08-15
  • 打赏
  • 举报
回复
C#,delphi调用的机器,跟你pb写的机器是不是同一台,不是的话,考虑下是不是缺少VC相关的dll,或在VC的编译选项设置为mt,还有Vs2012及以上编译的若需要XP上运行,那要选择VXX_XP
vistang 2014-08-14
  • 打赏
  • 举报
回复
引用 3 楼 lzp_lrp 的回复:
引用 2 楼 vistang 的回复:
[quote=引用 1 楼 xiajinxian 的回复:] 估计类名不正确
类名是正确的,其它语言都是用的这个
如果列名正确,那就是目前的环境不支持了,或者是pb不支持了 建议你用delphi再封装个dll,用pb来调用[/quote] 非常感谢您的回答,好像是这样,可是我delphi不是很熟悉, 打算明天换台xp,然后用vc6.0编译一个com看看能不能被支持,这个问题困扰我好几天了。
WorldMobile 2014-08-14
  • 打赏
  • 举报
回复
引用 2 楼 vistang 的回复:
引用 1 楼 xiajinxian 的回复:
估计类名不正确
类名是正确的,其它语言都是用的这个
如果列名正确,那就是目前的环境不支持了,或者是pb不支持了 建议你用delphi再封装个dll,用pb来调用
vistang 2014-08-14
  • 打赏
  • 举报
回复
引用 1 楼 xiajinxian 的回复:
估计类名不正确
类名是正确的,其它语言都是用的这个
A啦Dbit 2014-08-14
  • 打赏
  • 举报
回复
估计类名不正确

680

社区成员

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

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