私はAndroidプロジェクトをXamarinに移しています。Xamarinとjniを統合する適切な方法
static native int encodeData(long handle,
ByteBuffer input, int inputLen, ByteBuffer output, int maxOutputLen);
で:Androidのプロジェクトはここで外部ライブラリlibmyencoder.so.
を参照することが公開される機能の一つのための署名である:次のように
JNIEXPORT jint JNICALL encodeData (JNIEnv *, jclass, jlong,
jobject, jint, jobject, jint);
をJava側では、ネイティブメソッドの宣言は何かでありますXamarinのドキュメント、私はdllimportを使用するいくつかの例を参照してください。これに基づいて、私は次のように私のC#メソッドを宣言できたと思います:
[DllImport ("myencoder",EntryPoint="encodeData")]
public extern static void encodeData(long handle, ByteBuffer input,
int inputLen, ByteBuffer output, int maxOutputLen);
このC#の定義は正しいですか?
私はエントリーポイントを定義しましたが、どこにでもネイティブメソッドのシグネチャを特に言及していません。これは、次のようになります。
(JLjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;I)I
は、メソッドの宣言に基づいて適切な署名を推定するのに十分なスマートXamarinエンジンですか?
さらに、libmyencoder.so
を私のXamarinプロジェクトディレクトリにコピーしますか?よろしく。