gpt4 book ai didi

java - SWIG 在 Android 上生成 JNI 代码的问题

转载 作者:行者123 更新时间:2023-12-01 05:54:58 25 4
gpt4 key购买 nike

我想从 C/C++ 代码生成 JNI 包装器。

这是我的界面文件。

/* aes_security.i */
%module jni_security_example
%{
#include "pbkdf2.h"
%}

extern int pbkdf2_sha1 (const char *passphrase, size_t passphraseLength,
const char *SSID, size_t SSIDlen,
unsigned int iterationCount,
char *aeskey, size_t keyLength);

extern int GenrateIV_16_Bytes(unsigned char *IV);

这是 SWIG 生成的 Java 代码片段

 public static int pbkdf2_sha1(String passphrase, long passphraseLength,
String SSID, long SSIDlen, long encryptGrade, String key,
long keyLength) {
return cot_jni_security_exampleJNI.pbkdf2_sha1(passphrase,
passphraseLength, SSID, SSIDlen, encryptGrade, key, keyLength);
}

public static int GenrateIV_16_Bytes(SWIGTYPE_p_unsigned_char IV) {
return cot_jni_security_exampleJNI
.GenrateIV_16_Bytes(SWIGTYPE_p_unsigned_char.getCPtr(IV));
}

以下是我调用 JNI 代码的方式。

private String PASSPHRASE = "password";
private String SSID = "dummyssid";
private long iterationCount = 4096;

public String pbkdf2SHA1() {

int keyLength = 32;
char[] aesKey = new char[keyLength];
int result = pbkdf2_sha1(PASSPHRASE, (long) PASSPHRASE.length(), SSID,
SSID.length(), iterationCount, aesKey.toString(),
(long) keyLength);
Log.e(TAG, "Result " + result);

return new String(aesKey);

}

代码可以编译,但是当我运行时,它在 C 代码中的某个地方崩溃了。任何帮助将不胜感激。

谢谢。

最佳答案

我不懂 Java 或 JNI。但是您的 C 代码可能存在一些问题。尝试从 C 接口(interface)调用 pbkdf2_sha1()。如果它崩溃了,那就是 C 代码中的问题。否则找出崩溃点。当接受参数时,转换可能会出现问题

关于java - SWIG 在 Android 上生成 JNI 代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3314927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com