PB调用c#编写的dll com组件返回-3状态

full-stack-coder 2019-10-09 05:51:12
我用PB调用C#编写的Dll类库,
c#代码如下,

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace PB_tests
{
[Guid("B3798F4F-A0FF-4833-945A-C7BF140ADF1A")] //利用GUID生成器随机生成,大家上网查如何生成,必须
public interface CallParamers
{
[DispId(1)]
string PBCall(string para, ref int result);

}
[ComVisible(true)]
[Guid("0EA797E2-4472-4B30-A11D-1F7302B874C1")] //利用GUID生成器随机生成,大家上网查如何生成,必须
[ClassInterface(ClassInterfaceType.None)]
public class Class1 : CallParamers
{
public string PBCall(string para, ref int result)
{
result = 1234;
char[] tmp = para.ToCharArray();
Array.Reverse(tmp);
return new string(tmp);
}
public static void Main(string[] args)
{
}

}
}


按照网上的做法在设置com可见,同时为com互操作注册
然后编译生成dll

如下是PB代码

string messages
string test = "asd123"
int flag, returns

OleObject Oleb
Oleb = Create OLEObject
flag = Oleb.ConnectToNewObject("PB_tests.Class1") //CallByPB为C#中命名空间(namespace) ,Class1为C#中类名

if flag <> 0 then
MessageBox("提示", string(flag)+" PB调用C#COM组件失败,返回消息")
return
end if

messages =Oleb.PBCall(test, ref returns)
MessageBox("提示", messages+'~n'+string(returns))



然后本机运行ok,一切正常。

然后我们拷贝dll到另外一台机器,已安装.net 框架。
使用regasm.exe注册dll。
然后再次运行缺得到-3的状态提示,


请教各位各位大神,请问这个应该如何解决。谢谢。
...全文
547 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_54086159 2021-10-01
  • 打赏
  • 举报
回复

楼主,我也碰到这样的情况,请问你解决了吗

guoxinping163 2019-11-29
  • 打赏
  • 举报
回复
PB编译成exe运行就没有问题了
full-stack-coder 2019-11-08
  • 打赏
  • 举报
回复
引用 2 楼 qiuvsking 的回复:
还是机器的环境问题,看是32位还是64位,注册方法不一样的。
两个机器都是64位的操作系统windows 7
full-stack-coder 2019-11-08
  • 打赏
  • 举报
回复
引用 3 楼 jyglint 的回复:
是不是和目标机器上已注册的组件GUID冲突了,可以查找下注册表中的guid看看
没有冲突,换了guid也是一样的情况。
jyglint 2019-11-01
  • 打赏
  • 举报
回复
是不是和目标机器上已注册的组件GUID冲突了,可以查找下注册表中的guid看看
qiuvsking 2019-10-30
  • 打赏
  • 举报
回复
还是机器的环境问题,看是32位还是64位,注册方法不一样的。
full-stack-coder 2019-10-09
  • 打赏
  • 举报
回复
求救版主,在线等

740

社区成员

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

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