如何在PB中调用C#的函数??

zhuwc 2003-10-18 03:44:55
如何在PB中调用C#的函数??
...全文
55 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
c# 2005编写com组件,供PB11调用实例,研究了一下午,终于成功了,分享给大家 前言:c#写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意。 1、c#2005新建项目,类型为类库,项目名为AddCom确定。   配置:右键点击解决方案资源管理器的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)” 2、打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)],如果不改则不能被其他程序调用 3、编写com组件会用到guid(全球唯一ID),编写com组件必须要用到。c#会默认生成一个放在AssemblyInfo.cs,如没有生成,网上下一个生成guid的软件,有很多呢。 4、c#源代码如下,按如下方法编写代码后生成工程,/bin/release得到AddCom.dll。 using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace AddCom { [Guid("298D881C-E2A3-4638-B872-73EADE25511C")] public interface AddComInterface { [DispId(1)] int iadd(int a, int b); } [Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")] [ClassInterface(ClassInterfaceType.None)] public class AddComService : AddComInterface { public AddComService() { } public int iadd(int a, int b) { int c = 0; c = a + b; return c; } } } 5、dos下利用 e:\regasm AddCom.dll 命令注册com组件,可以理解为非.net平台下的regsvr32注册dll组件。提示注册成功即可。 6、pb11利用ole调用调用com组件,注意,此com组件无法用create ole control的browse查看到,只能利用如下的方法直接动态调用。 integer li_a,li_b,li_total //----------注册c#生成的com组件------------ OleObject ole_AddCom ole_AddCom = Create OLEObject li_rc = ole_AddCom.ConnectToNewObject("AddCom.AddComService") //AddCom为c#namespace,AddComService为c#namespace的class if li_rc <> 0 then MessageBox("ConnectToNewObject", string(li_rc) ) return end if //----------调用com组件函数-------------- li_total = ole_AddCom.iadd(li_a, li_b) //iadd为c#namespace(AddCom为c)class(AddComService为c)函数(iadd()) 完毕 *以上为个人经验,欢迎大家发邮件沟通。 email: kair-china@vip.sina.com qq: 55092518

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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