java - C JNI 帮助处理复杂代码

标签 java c linux java-native-interface

开发环境:Ubuntu 10.10(32位)、Eclipse、OpenJDK

我目前有用 C 编写的可执行文件的代码。我需要修改它以将其转换为 .so 库并从 Java 代码访问其函数。

目前,C 代码包含 3 个头文件和 3 个源文件 (.c)。我只需要调用 main 函数并将两个字符串从 java.lang.String 传递给它。所有其余的函数都是从 main() 内部调用的。不幸的是,其他函数之一将结果打印到命令行。如何实现 JNI 来传递两个字符串并返回这个特定结果?

我在网上找到了一些例子,但发现它们太简单了。 我也无法找到要使用的 jni.h header 。

我会使用JNIEXPORT int JNICALL Java_ppldtct_main(JNIEnv*,jobject,jstring,jstring)而不是C中的int main(int argc,char** argv)

非常感谢所有帮助。

谢谢

最佳答案

如果我理解正确,您正在尝试对现有代码进行最小的更改。

如果是这种情况,您可以尝试使用管道覆盖文件描述符 1 ( stdout ),并以这种方式获取程序的输出。

关于java - C JNI 帮助处理复杂代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4946951/

相关文章:

c++ - 在编辑器中打开后 Ubuntu Linux 上的 Eclipse 构建错误

linux - dma_mmap_coherent() 映射内存的零拷贝用户空间 TCP 发送

java - 使用 Joda Time 获取时区偏移

java - 为什么我的 libgdx java 桌面应用程序的高度不正确?

c - C 中的链表与 fgets()

c - 服务器和客户端对一个公共(public)端口号显示的不同端口号

在基于 UNIX 的系统上使用 C 和 C++ 清除屏幕?

java - org.apache.commons.net.ftp.parser.ParserInitializationException : Unknown parser type: Linux

java - 如何设计可以选择作为单例运行的 Java 类?

java - TextField 中的负数错误