2011-08-03 63 views
2

我想從C#如何調用從C#

DLL文件是使用IKVM Java應用程序製成,現在所有的代碼不會調用DLL文件中的DLL文件被打印的hello world。

我如何調用的DLL文件在我的C#代碼,並有可能創造Java的應用程序,將一個布爾值回到我的C#代碼?

謝謝你的時間。

回答

1

我不知道我理解你想要做什麼,所以如果道歉我誤讀。 IKVM應該將您的Java代碼轉換爲.NET dll或可執行文件。在「翻譯」之後,您應該能夠像使用「原生」.NET代碼一樣,使用.dll或多或少地使用.dll。

如果Java應用程序有打印的「Hello World」的控制檯上的一個主要方法,你應該有它轉換成一個.NET可執行文件(.exe),而不是一個DLL。 將它轉換爲.exe(並假設您在Windows系統上的Microsoft .NET上運行它)後,您應該執行它。

至於你的問題的第二部分,你也可以創建一個dll(從Java轉換),返回一個布爾值,並從C#應用程序使用它。

this tutorial兩的(相當準確得多)你在做什麼的例子。

+0

的想法是,最終我會做一個應用程序,需要一個字符串,併爲我提供了一個布爾價值來表明它是否被發現 - 這不可能與一個exe文件嗎?我也不能在項目中包括那個我可以嗎? – rik

+0

本教程也鏈接了地址部分。 .dll通常沒有寫入控制檯的「主要」方法,所以如果你想以這種方式使用它,你應該把它作爲一個帶有「public String helloWorld()」的類,它簡單地返回「hello world」作爲一個字符串。在將它轉換爲帶有IKVM的.NET DLL之後,您可以在控制檯應用程序項目中引用它並調用Console.WriteLine(myConvertedClass.helloWorld());' –

+0

它是否必須是控制檯應用程序?我用這個作爲旁邊的一個WinForms應用程序中的一塊?本質上我想獲得一個內部系統可用的數據列表,但這個部分的api是100%的java - 我還需要檢查一些其他數據,但是使用c#完成 - 結果顯示在表中。簡單地說,我想檢查java中的數據,然後在我的應用程序中返回結果以顯示在表格中 - 我無法做到這一點嗎? – rik

1
using System.Runtime.InteropServices; 

然後可以使用

[DllImport("myjavadll.dll")] 

然後添加DLL作爲通過右鍵單擊參考,並導航到它的參考文件夾。

編輯:

這裏是調用C++的dll到C#的鏈接。你可能可以解決它。

Call another languages DLL

編輯:我已經添加的DLL作爲參考的問題而被迫作爲資源添加。我相信這是因爲我正在使用sys32 dll。

這裏是舊的文章由我在那裏試圖找出一些DLL導入錯誤。如果遇到一些問題,可能會有所幫助。

Old Post

+0

我相信這應該工作pelase糾正我,如果我錯了,我打算在此期間重新檢查一箇舊項目 – sealz

+0

然後,我將如何調用主要方法,本質上,因爲這是什麼DLL - 一個主要的Java方法,當打電話打印你好世界 – rik

+0

@rik將該教程幫助答案?它顯示了靜態void main之前的一個調用dll方法。 – sealz