jacob调用自己写dll,入门坑集合

…衆ロ難τιáo~ 提交于 2020-03-09 13:29:20

1.使用Visual Studio 2019创建项目 C# 类库(.net Standard)。

using System;
namespace testDll
{
    public class Test
    {
        public string MyTest()
        {
            return "ok";
        }
        public string good() {
            return "GOOD";
        }
    }
}

2.这里面有个坑:就是必须创建两个函数,一个函数会报个错误:com.jacob.com.ComFailException: Can't map name to dispid:MyTest

3.生成解决方案

4.注册dll,注册dll时候注意。

    4.1 去查看你系统里面 C:\Windows\Microsoft.NET\Framework64 版本最高的NET。用最高的版本注册。不然会报错:RegAsm : error RA0000 : “D:\testDll.dll”不是有效的 .NET 程序集,因此未能加载它

    4.2注册时dll文件不要放到c盘会报错:RegAsm : error RA0000 : 无法定位输入程序集“C:\Program”或它的一个依赖项,放到其他盘就可以。这里注册无所谓你文件放哪里注册。

cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
regasm D:testDll.dll

5.将编写好的dll文件放到jdk/bin里面。或者发布的时候放在jre/bin。或者tomcat/bin。按具体情况定。

6.这样就跳过所有的坑了。然后就是jacob的配置了,这个是不多说,可以参考:jacob安装配置完整版

7.java里面的代码

public static void MyTest() {
        
        ActiveXComponent dotnetCom1 = null;
        try {
            dotnetCom1 = new ActiveXComponent("testDll.Test");
            //Variant rs=Dispatch.call(dotnetCom1, "MyTest", new Object[]{st,var,st1,pst,pnst});
            Variant rs=Dispatch.call(dotnetCom1, "MyTest");
            System.out.println(rs.toString());
        } catch (Exception var11) {
            var11.printStackTrace();
            throw new RuntimeException(var11.getMessage());
        } finally {
            if (dotnetCom1 != null) {
                dotnetCom1.safeRelease();
            }
        }
     
    }

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!