`

JAVA 使用 JACOB包 调用.NET DLL(测试连接成功)

 
阅读更多

1,大概步骤
1) 准备好 DLL文件(32位和64位系统下编译的 有差别, 不能通用)。
2) 装好jdk和eclipse.
3) 下载jacob最新的包(目前是1.7)
4) 将jacob.jar导入到eclipse项目路径, 将jacob-1.17-M2-x64.dll(或者是jacob-1.17-M2-x32.dll)添加到环境变量path.
5) 可以开始.


2. 小例子
1).NET代码
创建InvokeCSharp项目,在InvokeCSharp.cs文件中加如下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace InvokeCSharp
{

    [Guid("C41D14FD-F719-41fc-94CD-4B64D19F44B0")]
    public interface IExampleClass
    {
                [DispId(1)]
        string HelloJava(string name);
    }
    [Guid("70FE7452-0D4B-4717-8352-FEB0F6E830C1"),
    ClassInterface(ClassInterfaceType.None)]
    public class ExampleClass : IExampleClass
    {
        public ExampleClass() { }

        public string HelloJava(string name)
        {
            return "Java传递过来的参数为: " + name;
        }
    }
}
2)需要注意的是编译前的配置步骤,主要有以下几步:
1、解决方案资源管理器中右键点击项目名称“InvokeCSharp”,选择属性
2、在“应用程序”页签中,点击“程序集信息”按钮,在弹出的对话框中勾上最后一
  个复选框“使程序集COM可见”
3、在“生成”页签中,勾上最后一个复选框“为COM互操作注册”
4、生成“InvokeCSharp”项目
5、在项目的Debug\bin文件夹下会有这样几个文件:一个是InvokeCSharp.dll,另
  一个是InvokeCSharp.tlb,这个就是我们要的COM程序
6、最后,注册COM,打开“Visual Studio 命令提示”,进入InvokeCSharp项目
  的Debug\bin文件夹,运行“regasmInvokeCSharp.dll /tlb:InvokeCSharp.tlb”,这样就注册了COM,regasm为.NET Framework 工具中的程序集注册工具。注册成功后,每次C#程序有修改,都不再需要重新注册了

3)java 代码
  import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;
import com.sun.xml.internal.ws.resources.DispatchMessages;

public class JavaInvokeCSharpClass {

private final String DLL_NAME = "DLLforVB.ComDLLforVB";

private ActiveXComponent dotnetCom = null;
private Dispatch dispatch = null;
private Variant var = null;

public JavaInvokeCSharpClass() {
dotnetCom = new ActiveXComponent(DLL_NAME);
dispatch = dotnetCom.getObject();
}

public static void main(String[] args) {
try {
JavaInvokeCSharpClass test = new JavaInvokeCSharpClass();
            test.var = test.dispatch.call(test.dotnetCom, "ToolGetLocalIP");
String str = test.var.toString();
System.out.println(str);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

http://forzhuhaikuan-sohu-com.iteye.com/blog/1654927

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics