dev env:Ubuntu 10.10(32位),Eclipse,OpenJDK
我目前拥有用C编写的可执行文件的代码。我需要修改它以将其转换为.so库并从Java代码访问其函数。
目前,C代码包含3个头文件和3个源文件(.c)。我只需要调用main函数并从java传递两个字符串。所有其余的函数都是从main()中调用的。不幸的是,其他一个函数将结果打印到命令行。如何实现JNI传递两个字符串并返回此特定结果?
我在网上找到了一些例子,但发现它们太简单了。 另外,我找不到jni.h标头供使用。
我会在C中使用JNIEXPORT int JNICALL Java_ppldtct_main(JNIEnv*,jobject,jstring,jstring)
代替int main(int argc,char** argv)
吗?
非常感谢所有帮助。
谢谢
答案 0 :(得分:0)
如果我理解正确,您正尝试对现有代码进行微小更改。
如果是这种情况,您可以尝试用管道覆盖文件描述符1(stdout)并以这种方式获取程序的输出。
答案 1 :(得分:0)
您还可以从本机C代码回调Java代码。
您可以通过调用JNI提供的函数GetMethodID()来查找Java方法,并通过以下方式调用此类函数: CallVoidMethod(),具体取决于返回类型。
可以使用NewStringUTF()的NewString()在C中创建Java字符串。