七月 1st, 2010 by 尋道者
必備程式:jacob,為:jacobBin_17.zip
一、使用vs2008或者vs2010建立一個Windows類庫程式,項目名稱就叫InvokeCSharp,再建立一個類:ExampleClass,具體代碼如下:
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices;namespace InvokeCSharp{ /// <summary> /// GUID自動產生就好了 /// </summary> [Guid("C41D14FD-F719-41fc-94CD-4B64D19F44B0")] public interface IExampleClass { /// <summary> /// [DispId(1)]為方法的COM調度標識符,如果有多個方法可相應的在每個方法前面加[DispId(2)], [DispId(3)] /// </summary> /// <param name="name"></param> /// <returns></returns> [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; } }}
需要注意的是編譯前的配置步驟,主要有以下幾步:
1、方案總管中右鍵點擊項目名稱“InvokeCSharp”,選擇屬性
2、在“應用程式”頁簽中,點擊“程式集資訊”按鈕,在彈出的對話方塊中勾上最後一個複選框“使程式集COM可見”
3、在“產生”頁簽中,勾上最後一個複選框“為COM互操作註冊”
4、產生“InvokeCSharp”項目
5、在項目的Debug/bin檔案夾下會有這樣幾個檔案:一個是InvokeCSharp.dll,另一個是InvokeCSharp.tlb,這個就是我們要的COM程式
6、最後,註冊COM,開啟“Visual Studio 命令提示”,進入InvokeCSharp項目的Debug/bin檔案夾,運行“regasm InvokeCSharp.dll /tlb:InvokeCSharp.tlb”,這樣就註冊了COM,regasm為.NET Framework 工具中的程式集註冊工具。註冊成功後,每次C#程式有修改,都不再需要重新註冊了
二、jacob下載完成解壓後,將jacob.dll複製到Windows/system32/,jacob.jar複製到Java項目中
三、開啟Eclipse,建立一個Java Project,名字叫:JavaInvokeCSharp,然後建立一個帶有main的類,就叫JavaInvokeCSharpClass,代碼如下:
import com.jacob.activeX.ActiveXComponent;import com.jacob.com.ComThread;import com.jacob.com.Dispatch;import com.jacob.com.Variant; public class JavaInvokeCSharpClass{public static void main(String[] args){try{ActiveXComponent dotnetCom = new ActiveXComponent("InvokeCSharp.ExampleClass");Variant var = Dispatch.call(dotnetCom,"HelloJava","Jacob真是個好東東");String str = var.toString();System.out.println(str);}catch (Exception ex){ex.printStackTrace();}}}
運行該類,會輸出:你好,Java傳遞過來的參數為:Jacob真是個好東東
這樣,Java通過jacob調用c#程式就完成了。
Published by 尋道者 on 七 1, 2010 under Java方面 | Post your comment now