JNI开发中遇到的各种问题

本文记录了在JNI开发过程中遇到的环境配置、头文件引用、错误处理等问题,包括安装NDK、配置编译环境、创建Android.mk文件、使用javah生成头文件,以及解决在Android手机log中打印信息的难题。通过这些问题的解决,为后续的JNI开发提供了参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

到了年底,公司的事忙的差不多了。一年过去,在领域之外也感觉也没什么大的提升,之前一直想弄重新捡起C++/C的愿望始终无法实现。

这一年开始便各种事情。。。一直到现在才按照网上的各种教程写了个JNI的代码。其中也遇到不少问题。现一一记录下来,以备后用。


首先安装环境,网上有教学、简单说一下跳过:下载安装NDK,cygwin,MinGW,eclipse CDT插件。


新建一个C++工程,添加编译器:NDK的编译环境配置路径:android-ndk-r9\ndk-build.cmd 

创建好了之后编写Android.mk 文件,ndk-build会自动找到这个文件进行解析。


要使用native方法的类编译成class文件 然后使用命令行 javah -jni  完整类名,生成".h"文件


在生成的“h文件”的方法名照抄到"cpp文件",如:

h文件的:

JNIEXPORT void JNICALL Java_com_demo_jni_HelloWorld_displayHelloWorld

 (JNIEnv *, jobject);

变为cpp文件的:(在方法体内实现功能)

JNIEXPORT void JNICALL Java_com_demo_jni_HelloWorld_displayHelloWorld

(JNIEnv *env, jobject obj) {


        char *__android_log_print(ANDROID_LOG_INFO, "HelloWorldTest", "Hello world!/n");
printf("Hello world!/n");
return;
}

这个方法是无法再android手机的log中打印出结果的。要调用android的log库

此时要导入#include <android/log.h>,会报没有找到include的资源的错

这时候在项目中添加folder linked (2):


1:E:\android-ndk-r9\platforms\android-18\arch-arm\usr\include

2:E:\android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\lib\gcc\arm-linux-androideabi\4.8\include


注意,如果出现

Android NDK: Could not find application project directory !    
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.    
E:\android-ndk-r9\build/core/build-local.mk:130: *** Android NDK: Aborting    .  Stop.

说明已经成功了

在工程的/libs目录会出现正确的so文件

关于android.mk的编写格式,以后继续写。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值