.Net创建Com组件、注册Com组件/java 引用.net dll程序集

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yu18352566889/article/details/82962163

先了解下几个知识点

1 java环境是无法直接引用.net程序集dll的

2 Com组件是啥?Com组件与语言无关,是平台之间中的动态链接,简单的理解,就是.Net环境中配置版的dll程序集

创建Com组件

1.创建接口配置文件等

新建项目,添加引用,按照以下代码格式封装接口

2.设置配置

1)项目->属性

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

2)项目->属性

切换到“签名”选项卡

  勾选“为程序集签名”

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

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

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

3)

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

注册过程:

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

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

C:\Windows\system32>cd 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>regasm mylib.dll
 

注册Com组件


namespace CutGLibNew
{


    [ComVisible(true), Guid("A1EFBACB-4566-4521-8059-B4D54F2EE08F")]
    public interface CutGLibNewIfce
    {
        [DispId(1)]
        void SetComputerLicenseKey(string aLicenseKey);
        [DispId(2)]
        void CompleteMode(bool mode);
        [DispId(3)]
        void SawWidth(double sawWidth);
        [DispId(4)]
        void TrimLeft(double trimLeft);
        [DispId(5)]
        bool AddLinearStock(double aLength, int aCount);
        [DispId(6)]
        bool AddLinearPart(double aLength, int aCount, string aID);
        [DispId(7)]
        string ExecuteLinear();
    }
    [Guid("4400DB9B-B79F-4328-8037-2268B5AE4B55"), InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
    public interface CutGLibNewIfce_Event
    {


    }

    [Guid("02418074-E14E-4764-B1E9-10967C56B135"), ClassInterface(ClassInterfaceType.None), ComSourceInterfaces(typeof(CutGLibNewIfce_Event))]
    public class CutGLibHelper : CutGLibNewIfce
    {
        CutEngine cutEngine = new CutEngine();

        public void SetComputerLicenseKey(string aLicenseKey)
        {
            cutEngine.SetComputerLicenseKey(aLicenseKey);
        }

        public void CompleteMode(bool mode)
        {
            cutEngine.CompleteMode = mode;
        }

        public void SawWidth(double sawWidth)
        {
            cutEngine.SawWidth = sawWidth;
        }
        
        public void TrimLeft(double trimLeft)
        {
            cutEngine.TrimLeft = trimLeft;
        }

        public bool AddLinearStock(double aLength, int aCount)
        {
            return cutEngine.AddLinearStock(aLength, aCount);
        }

        public bool AddLinearPart(double aLength, int aCount, string aID)
        {

            return cutEngine.AddLinearPart(aLength, aCount, aID);
        }

        public string ExecuteLinear()
        {

            return cutEngine.ExecuteLinear();
        }





    }
}

 

展开阅读全文

没有更多推荐了,返回首页