PB9.0调用C#编译的DLL文件
PowerBuilder9.0是一个比较老的语言,在对接第三方程序的情况下,存在不小的缺陷。为了方便实现跟第三方的接口对接,也上网查阅了资料,发现采用PB调用.NET编译好的dll文件可以完美的弥补缺陷。
接下来就为大家总结下,具体实现方式。
一、DLL文件生成
- 必须以管理员身份运行vs,否则在最后生成解决方案的时候无法通过。
- 其次,在新增C#项目的时候.NET框架一定要记得选择3.5,太高了不行,这点很重要。
- .NET框架一定要记得选择3.5,这点很重要
- 在项目中新建个类文件,然后在文件上面,类似下图
[ComVisible(true)][ClassInterface(ClassInterfaceType.AutoDual)][ProgId(“ReadDll.Test”)]其中,ReadDll 指的是项目命名空间名称;
Test 指的是类文件名称
4.修改应用程序的 输出类型和程序集信息。
- 将应用程序的输出类型改成“类库”
- 将应用程序的程序集信息中的“使用程序集COM可见”的选择性勾选上。
- 将 生成 中 “为COM互操作注册”选择勾选上
- 生成解决方案后,会产生对应的DLL和TLB文件
- 将C#生成的DLL和TLB文件拷贝到PB9.0程序目录下,还需对DLL和TLB文件进行注册后才可以正常使用。
二、DLL和TLB文件注册
- 先添加环境变量 “C:\Windows\Microsoft.NET\Framework\v2.0.50727”,以win10操作系统为例:
首先,选中电脑桌面上的“此电脑”,右键选择“属性”
然后,选择“高级系统设置”
其次,选择“环境变量”
最后,在系统变量 中找到变量名为“Path”的,双击打开后,新增个环境变量
- 注册DLL和TLB文件,已管理员身份“命令提示符”,在命令窗口中输入“regasm C:\Users\ASUS\Desktop\C_dll\ReadDllNew.dll /tlb: ReadDllNew.tlb”
其中“C:\Users\ASUS\Desktop\C_dll”表示DLL和TLB文件所在的目录路径,建议最好是直接将DLL和TLB文件拷贝到PB的程序目录下。
看到上图提示信息后就完成DLL和TLB文件测试了,就能调用C#中的方法了。
三、调用实例
- C#中的测试方法
public int GetSum(int a, int b)
{
return a + b;
}
- 在PB9.0中具体调用
int li_number,li_cel
encryption =create OLEObject
li_cel=encryption.ConnectToNewObject("ReadDll.Test")
li_number=encryption.GetSum(100,20)
就这样吧,第一次写,大家将就看着吧