私は、エンコードされた文字列入力を受け取り、それをデコードするDLLを持っています。 DLLは、Codeblocksとmingw64を使用してWin7 64ビットで作成されました。 Cコードだけはうまく動作しますが、同じ文字列のwhileループでJNA経由で実行すると、約70%の呼び出しで正しくデコードされ、残りの部分は間違っています。私は状況をデバッグしたいが、JavaコードがJNAに制御を渡した後に、どうやってそれを行うかわからない。あるいは、どこを見るかについてのアイデアも役立ちます。次のようにJNA C DLLデバッグハウツーですか?
CとJNAでメソッドのシグネチャは、私が(「HelloWorldの」それを暗号化した文字列を取る場合
Java: int Decrypt_Blk(byte[] expkey, byte[] in, int size, byte[] out);
C: __declspec (dllexport) int Decrypt_Blk (unsigned char *expkey, unsigned char *in, unsigned int insize, unsigned char *out);
正しさは、例えば、出力によって決定されますが、私はに行くつもりはないです暗号化の詳細は無関係です)、暗号化された出力をこのDLLメソッドに渡します。10回中7回「HelloWorld」を3回取得します。そして、同じループ内で、同じ変数を使用して同じスレッドに10回もいるのです。誤った3回の出現もランダムですが、私が気がつける唯一のことは、最初の試合は何度も正しいと思っていますが、1〜10回の試合で正しく実行されません。
[下のリンクをチェック](http://web.archive.org/web/20081210024620/http://www.kineteksystems.com/white-papers/mixedjavaandc.html) – user1097489
どのように操作の「正確さ」?最初に、入力と出力で符号なしと符号付きの間の変換エラーがあります。 – technomage
あなたのAPIは '' expkey''データの形式と '' out''バッファの大きさについて仮定しています。 – technomage