JNI函数需要注意的地方

给自己敲个钟,防止每次都犯相同的错误

对于含有下划线的函数,比如在java文件中这样写:

       package com.rix.myApp;
       public class myApp
       {
       public native void rix_init();
       }
       

在jdk 1.7中对应查找的函数为:

       JNIEXPORT void JNICALL Java_com_rix_myApp_myApp_rix_1init
  (JNIEnv *, jobject);
       

记得在jdk 1.6中不会存在这个问题,所以,最好的办法是通过javah
去获取函数,生成对应的.h文件

       javah -classpath bin/classes:android-sdk-windows/platforms/android-7/android.jar:Java/jdk1.7.0_25/lib -d jni com.rix.myApp.myApp
       

但如果函数中不包含下划线则不会存在这样的问题

杂记几则

最近好忙,都无时间做记录。零碎的记录几个最近犯的值得记的几个错

erlang相关:

使用下面的命令可以将erlang置为后台服务模式,即使退出远程登录也
在运行。

       run_erl -daemon /tmp/ log/ "CMD"
       

tmp这个在后续的交互命令的地方可以使用,log用来告诉erl日志存放
的目录,这两个必须以/结尾。

CMD部分是原来命令行启动的那一长串命令,erl -pa 。。。。。。注意
必须带上””号,不然不能用的。

如果要连接上这个后台的服务来运行命令,可以使用下面的命令:

       ssh localhost -tt to_erl /tmp/
       

这个其实就是普通的ssh连接,所以如果不是在本地的话,localhost可
以替换成user@host的方式, /tmp/就是执行run_erl所指定的目录如果命令找不到的话,就输入to_erl的全路径

要退出服务怎么办?登录进去之后,提供的就是一个普通的erl的
shell,执行q().就可以将服务停掉了,和在命令行下一样。

不想停掉的话,CTRL+D可以关闭了。

gerrit相关:

我在使用gerrit,http下提交稍大一些文件的时候,总出现411,502等乱七八
糟的错误,其实只要在.git/config下添加下列一行就可以了:

       [http]
       postBuffer=20971520000
       

这个是告诉http post时的buffer大小,反正大些就好,记住要修改对
应项目下的,今天折腾了我半天,才发现我没改对文件。

顺便一提:最近在iPhone下看了个phonegap相关的项目,觉得很不错,有一些新奇的想法。改天
实现实现。

mingw32编译如果要去除dll依赖的话,添加-static选项即可。