【问题标题】:How to transform C code to JNI Code如何将 C 代码转换为 JNI 代码
【发布时间】:2012-05-04 18:48:50
【问题描述】:

我有 C 代码 (testFile.c),我想在 Android 应用程序中使用,使用 JNI。 这段代码包含纯C代码,里面有很多方法。此外,它还调用了一些C头文件(file1.h,file2.h)。

例如: 测试文件.c

#include "file1.h"
#include "file2.h"

void myMethod1()
{
    ...
    ...
}
void myMethod2()
{
    ...
    ...
}
void myMethod3()
{
    ...
    ...
}

我是否必须将整个 testFile.c 转换为 JNI 代码,或者只是转换一些我稍后将使用的方法(不是全部)? 我还应该在头文件(file1.h 和 file2.h)中转换 c 代码,还是只在 testFile.c 中转换 c 代码?

【问题讨论】:

    标签: android android-ndk java-native-interface native-code


    【解决方案1】:

    或者如果你的 Java 和 C 代码之间的接口非常简单,但是在 Android 上使用 jni 的整个过程不熟悉,你可以或多或少地将你的 C 代码合并到 ndk 中的 hello-jni 示例中。关键是你从构建和工作的东西开始,一点一点地添加你需要的东西,如果你遇到问题,你可以备份并找出你在哪个阶段破坏它。

    【讨论】:

    • 感谢您的回复。但是,对不起,我的问题是,我应该在头文件(file1.h 和 file2.h)中也转换 c 代码,还是只在 testFile.c 中转换 c 代码?
    • 就像C代码一样,这取决于您是否需要进行适配以与ndk构建环境、android执行环境、活动生命周期对进程生命周期的影响等兼容。这太宽泛了一个特定答案的问题。如果遇到特定问题,请尝试并发布一个新问题(但请阅读并理解活动生命周期文档,以避免偶尔错误)
    【解决方案2】:

    最简单的方法是定义您的 JNI Java 端接口并使用自动生成 c 方法存根 javah 来生成 c 文件。然后在这个 c 文件中调用实际的 c 方法 method1()method2()method3()

    http://docs.oracle.com/javase/1.4.2/docs/tooldocs/windows/javah.html

    【讨论】:

    • 感谢您的回复。但是,对不起,我的问题是,我应该也转换头文件(file1.h 和 file2.h)中的 c 代码,还是只转换 testFile.c 中的 c 代码?
    猜你喜欢
    • 1970-01-01
    • 2020-11-04
    • 2019-05-26
    • 1970-01-01
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多