JNI学习(一)
来源:互联网 发布:免费空间域名 编辑:程序博客网 时间:2024/04/30 06:04
Android使用C语言的场景:
1,android下的极品飞车等游戏,要求碰撞效果等实时处理,需要调用c代码;
2,开源的c的代码库:
opencv:intel开发,图形和视频实时处理的方法库;
3,rmvb 视频 avi
视频和音频编解码的代码库(ffmpeg)
4,opengl(c代码库)
C语言基础:
1,system(“pause”)用getchar()代替,有了scanf再用getchar()就无效了;
2,C语言中没有boolean类型; 3,C语言中没有byte类型; 4,signed,unsigned只修饰整数;
3,int* p,int p,int p写法不同而已;
*的含义:
- 放在数据类型的前面,代表就是该数据类型的指针,例如float*;
- 放在指针变量的前面,代表指针变量存放的值; 特注:指针就是地址,地址就是指针。
4,方法执行结束后,其方法内部变量就被回收了;
5,指针中的常见错误:
- 指针没赋值,千万别用哈;
- 类型不同指针给给我转换;
- 指针不允许访问被回收掉的数据(子函数执行完毕后,子函数所有局部变量都会被系统回收);
6,指针的重要性:
- 直接访问硬件 (opengl 显卡绘图)
- 快速传递数据(指针表示地址)
- 返回一个以上的值(返回一个数组或者结构体的指针)
- 表示复杂的数据结构(结构体)
- 方便处理字符串
- 指针有助于理解面向对象
7,指针和数组的关系:数组名是数组第一个元素的地址;
8,动态内存分配的好处:
- 动态分配的内存不会在子函数执行后回收,可以继续使用;
- 不要使用已经回收掉的内存中的内容;
- 静态内存是在栈内存中分配的,堆空间是在堆空间中分配的;
9,要注意堆内存和栈内存的区别;
10,游戏外挂原理:找到某个方法的首地址,并进行调用;
11,结构体struct的size会根据编译器而不同;
12,typedef和#define
- typedef用于给数据类型取别名;
- #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查;
13,void*没有明确数据类型的指针;
14,typedef const struct JNINativeInterface* JNIEnv;
JNI的使用:
- 安装CDT;
- 安装cygwin;
- 安装NDK;
- 在cygwin的etc中的profiles文件中添加path:/cygdrive/d/cygwin/android-ndk-r7b;
- 生成头文件的步骤:
javac -d . HelloWorld.java;
javah com.example.firstndk.HelloWorld;
对于android项目,应该在classes目录下执行javah命令;
0 0
- JNI学习(一)
- JNI接口学习(一)JNI数据类型
- JNI学习系列(一)
- Java JNI学习(一)
- JNI编程学习(一)
- 一步一步学习JNI(一)
- JNI学习(一)hellojni
- Jni学习一:了解Jni
- JNI学习(一)、JNI简介和HelloWorld示例
- jni入门学习笔记(一)
- jni入门学习笔记(一)
- jni入门学习笔记(一)
- [Android]JNI学习笔记(一)
- JNI 入门学习笔记(一)
- Jni学习笔记(一)创建项目
- JNI学习笔记一
- JNI学习(一),入门
- JNI学习(一)
- 下拉刷新漫谈
- github最快速入门(最关键的语句)
- Android随心笔记一:Android自定义View的3个构造方法一般何时使用
- Android L体验
- iOS FMDB操作sqlite数据库
- JNI学习(一)
- 关于寻找shape特征(feature)的方法总结
- LeetCode 363. Max Sum of Rectangle No Larger Than K(矩阵和)
- Jagsaw文档
- eclipse安装web插件、安装centos版本的idea
- FragmentTabHost中如何实现状态保存
- Linux命令常用
- js闭包
- 赫夫曼编码