前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VFP调用C#编写的DLL控件

VFP调用C#编写的DLL控件

作者头像
静谧的小码农
发布2019-04-18 14:45:34
2K0
发布2019-04-18 14:45:34
举报
文章被收录于专栏:静谧的小码农静谧的小码农

因为VFP出来时还没有.NET,所以VFP不支持.NET,C#编写出来的DLL控件需要转换成系统COM组件,才能够被VFP调用,当然不仅仅局限于C#与VFP之间的调用,各种语言都有自己写COM组件的方法。

下面就先介绍下,关于VFP与C#之间的联系

第一步:C#编写COM组件 

1、新建一个类库项目

2、将Class1.cs改为我们想要的名字(例如:MyClass.cs)

问是否同时给类改名,确定

3、修改Properties目录下面的AssemblyInfo.cs

ComVisible属性设置为true

改成下图

4、项目->MyLib属性

切换到“生成”选项卡,在底部位置,勾选“为COM互操作注册”

切换到“签名”选项卡

 勾选“为程序集签名”

 在下面的下拉框里面选择“<新建...>”

5、在弹出的对话框里面,输入MyKey。。或者随便取个名字

  去掉“使用密码保护文件(P)”的选项

6、开始编码,任何一个公开的类,必须有一个 I开通的接口定义

代码语言:javascript
复制
using System;

using System.Collections.Generic;

using System.Runtime.InteropServices;

using System.Text;



namespace dll1

{

    [ComVisible(true)]

    [Guid("A9762ABB-7FED-4CF0-B69B-4B5A594839C1")]

    [ProgId("dll1.Class1")]

    public class Class1 : Iclass1

    {

        public string getdll(string A)

        {

            string B = "1";

            B = A + B;

            return B;

        }

        public void Initialize()

        { }





        public void Dispose()

        { }



    }

    [ComVisible(true)]

    [Guid("9B2FD85C-1610-4F05-B6FD-D86F501017D2")]

    public interface Iclass1

    {

        void Initialize();

        void Dispose();

        string getdll(string A);



    }

}

7、GUID属性里面的那个字符串,在“工具”菜单下面,“创建 GUID”

  选择 [GUID(“xxxxxxxxxx-xxxx….xxxxxx”)],然后复制

8、编译&注册

编译:生成->生成解决方案(F6)。如果没有生成.tlb文件,需要用管理员身份打开Visual Studio 2010,然后重新编译

注册过程:

开始→所有程序→Microsoft Visual Sutdio 2010→Visual Studio Tools→Visual Studio命令提示符(2010)〖注:以管理员身份运行〗

在命令提示符下面,进入Dll所在的目录

C:\Windows\system32>cd/d E:\MyLib\MyLib\bin\Debug

用 gacutil /i MyLib.dll 将这个DLL加入的全局缓存里

E:\MyLib\MyLib\bin\Debug>gacutil/i mylib.dll

然后用 regasm MyLib.dll 注册这个dll

E:\MyLib\MyLib\bin\Debug>regasmmylib.dll

第二步:VFP调用COM组件

代码语言:javascript
复制
PRIVATE obj as Object

obj = CREATEOBJECT("dll1.Class1")*!*COM组件的ProgId

Messagebox(obj.getdll("aaaa"))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年04月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档