私は "kernal/io/serailport" java jarにxamarinのBinding Projectを使用しています。ビルドプロセスは、 "serial_port.so"を共有オブジェクトライブラリとして提供します。 serial_port.soに存在する関数を呼び出すC#コードの行として次のとおりです。 -Javaバインディングを修正するにはどうしたらいいですか?UnsatisfiedLinkError?
// This line calls java serialport class present in serial_port.so library refrenced in android project.
serialPort = new Kernal.io.SerialPort(device, Baudrate, 0);
楽しい部分がある今、このアプリはうまく動作しますが、私は「sqliteのネット-PCL」のアンドロイドプロジェクト内を含む場合sqliteのDBをアクセスそれは以下に述べる例外を与える: -
Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lkernal/io/serialport Unhandled Exception
このエラーは、私がアンドロイドプロジェクトxamarinで「sqliteのネット-PCL」のライブラリを追加する場合にのみ発生します。
私は問題がスレッドに関係していると思います。 "sqlite-net-pcl"がアンドロイドプロジェクトに含まれていない場合、バインディングプロジェクトのC#コード呼び出しメソッドはメインスレッドで正常に実行され、例外は発生せず、アプリケーションは正常に動作しますが、 "sqlite-net-pcl "がアンドロイドプロジェクトに追加されました。私はsqlite pcl libraryの中には、上記の例外が発生したために別のスレッドでバインディングプロジェクトメソッドを呼び出すことがあると思います。
今、私の質問は、メインスレッドで実行するバインディングプロジェクトメソッドを呼び出すC#コードを作成することができますか、または推奨されないメインスレッドで実行するslqite-net-pclライブラリを作成できますか?
私の推測が間違っている場合、何が原因で例外が発生する可能性がありますか、どのように対処できますか。
ありがとう
恐ろしい!あなたのトリックが問題を解決しました、ありがとう@Niraj Adhikari。 – codemilan