5

シンプルな .NET を作成するためのこのコードがあります.dll。のみを返しますint

ただし、Java 内では動作しません。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ReturnINT
{
    public class ReturnINT
    {

        public static int RetornaInteiro ()
        {
            try
            {
                int number = 2;

                return number;
            }
            catch (Exception)
            {
                return 1;
            }
        }
    }
}

Java内からメソッドを呼び出すにはどうすればよいですか?

JNI を使用すると、Java で次のエラーが発生します。

Exception in thread "main" java.lang.UnsatisfiedLinkError: Dll.RetornaInteiro()V
      at Dll.RetornaInteiro(Native Method)
      at Dll.main(Dll.java:27)
4

2 に答える 2

5

http://www.javonet.comも確認してください。1 つの jar ファイルを使用すると、この dll をロードして次のように呼び出すことができます。

Javonet.AddReference("your-lib.dll");
int result = Javonet.getType("ReturnINT").Invoke("RetornaInteiro");

Javaonet は自動的にライブラリを .NET プロセスにロードし、その中に含まれるすべてのクラスと型にアクセスできるようにします。次に、型を取得して静的メソッドを呼び出します。メソッドの結果と引数は、JAVA 型と .NET 型の間で自動的に変換されます。たとえば、そのような文字列またはブール引数を渡すことができます

Boolean arg1 = true;
String arg2 = "test";
Javonet.getType("ReturnINT").Invoke("MethodWithArguments",arg1,arg2);

そして、それらは自動的に翻訳されます。

さらに、タイプのインスタンスを作成したり、イベントをサブスクライブしたり、プロパティとフィールドを設定/取得したり、例外を処理したり、値型の引数を渡したりすることもできます。詳細については、ドキュメントを確認してください。

http://www.javonet.com/quick-start-guide/

PS: 私は Javanet チームのメンバーです。そのため、ネイティブ インテグレーションと当社の製品に関する詳細な質問があれば、遠慮なくお尋ねください。

于 2013-06-19T22:28:38.997 に答える
4

直接呼び出すことができます: http://jni4net.sourceforge.net/

または、実行可能ファイルとして呼び出すこともできます。

于 2012-05-24T19:19:08.663 に答える