NDK错误总结

1:在android studio 1.5中,开始用默认生成的c文件,编译没有问题,android studio编译没有问题,而且 NDK命令行编译也没有问题;

     后来修改为cpp文件,编译不过去了总是提示我找不到 .c 那个文件,但是我已经将.c文件修改为cpp文件了;


修改方法:

      方法1:查看android studio1.5生成的android.mk文件,里面的src路径是绝对路径,我将命令行的路径修改为绝对路径就可以编译了;

      方法2:但是根据所有的示例,可以知己用当前路径,就是直接写文件名就可以,当你的ndk工程下的libs文件夹和obj文件夹删除,重新编译就可以了;





2:在NDK中用javah.exe生成.h头文件的命令行:

以我的测试工程为例:



D:\AndroidStudioProjects\MyApplication6\app\src\main>javah -d jni -classpath D:\androidsdk\platforms\android-22\android.jar;D:\android_sdk\extras\android\support\v4\android-support-v4.jar;D:\android_sdk\extras\android\support\v7\appcompat\libs\android-support-v7-appcompat.jar;..\..\build\intermediates\classes\debug com.example.administrator.myapplication.MainActivity






3:关于C和cpp的区别:

      一: 转:http://blog.csdn.net/kandyer/article/details/9097051

      在C和C++中,NDK中的部分语法不太相同;

jni/hellocpp/main.cpp:16:18: error: base operand of '->' has non-pointer type 'JNIEnv {aka _JNIEnv}'


android java 调用c++程序时报的错误,


代码的写法是:

jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,  jobject thiz, jstring str, jint i )
{
    return (*env)->NewStringUTF(env, "Hello from JNI !");
}

错误在于:

(*env)->NewStringUTF(env, "Hello from JNI !");

这一行,这是c的写法,而我的是cpp程序,需要改写成:

env->NewStringUTF( "Hello from JNI !");




待续......

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chinabinlang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值