【发布时间】:2011-09-07 02:33:35
【问题描述】:
背景
我正在 Eclipse 中为 android 开发一个应用程序,现在我遇到了一个问题,我需要你的帮助。所以我必须从 JAVA 应用程序中调用用 C 编写的函数。但在我编写代码的过程中,我有一些问题,您可以在下面看到这些问题。我正在等待您的答案和想法...
C代码:
typdef struct blobData_s {
unsigned long length;
unsigned char data[1];
} blobData_t;
unsigned int CheckEnrollmentExist ( unsigned long hdevice, blobData_t* pInputInfo ) {
// Function code goes here
..........................
return some_value;
}
JAVA代码:
在 JAVA 代码中,而不是 unsigned long,我使用 int,所以我可以写。
class jblobData_c {
public int langth;
*Question 1.*
}
public class ApplicationMainClass extends Activity {
// Some code goes here
......................
public native int JCheckEnrollmentExist( int jhdevive, *Question 2.* );
}
问题 1。
- 我可以在 JAVA 代码中使用什么来代替
unsigned char? - 我必须用 JAVA 代码而不是
unsigned char data[1];写什么?
问题 2。
- 如何在 JAVA 代码中使用
class jblobData_c而不是blobData_t* pInputInfo? - 我必须用 JAVA 写什么而不是
blobData_t* pInputInfo?
JNI 代码:
JNIEXPORT jint JNICALL Java_com_Test_JCheckEnrollmentExist(JNIEnv* env, jobject obj, jint jhdevice, *Question 2.* ) {
// Call the base function from C code.
return CheckEnrollmentExist( jhdevice, *Question 3.*);
}
问题 3。
- 我必须在
CheckEnrollmentExist函数中写入 C 代码函数而不是blobData_t* pInputInfo才能使该函数正常工作并且给定参数相同
参考
【问题讨论】:
-
我至少会说对于问题 1,一个字节就是你想要的。也遇到了另一个帖子stackoverflow.com/questions/3923299/…
-
"一个字节就是你想要的。"你可以解释吗 ?谢谢!
-
抱歉,查看 Java 规范确实有一个字节是有符号的......
标签: java android c eclipse java-native-interface