com_jnitest_Jni2.cjnitest.dllができるので、パスが通ったところにコピー。com.jnitest.Jni2AbortedAbortか・・・。DLLがないと、loadLibrary()が例外を出す。DLLが見つからないわけではない。helloString()を呼び出す行をなくしても変わらないので、関数でエラーになっているわけではない。いうことは、DLLの読み込み付近でJava以外でのエラーが発生していることになる。Studio6で作ったのだろう。これが読み込めるなら、jnihello.dllに問題がある。いうわけで、jnihello.dll自体に何かありそうだ。今使っているJavaは、1.6.0_24である。MINGWのコンパイル方法と違うのは、-Iしてないところくらいか。コンパイルできてるから、インクルードパスの指定はいらんと思ってるけど、まあやっておくか。・・・コンパイルエラーが出た。いうことは、デフォルトの参照先ではだめということか!うん、書いてあることはちゃんと意味があるのだな。コンパイルエラーは、jlongがうんたらかんたら。include/win32/jni_md.hのところだ。ここで__int64というのがあるが、これがいかんのだろう。すると、今度は「互換のない型だ」といわれた。char*を返しているけど、要求されているのはjstring型か。*jstring;違うやん。変換が必要ということか。コピー返しではなくアドレス返しか。ヒープに取ってやらんといかんことになるが、どうやって解放すればいいんだろう?JavaVMがやってれるのか?NewStringUTF()は、なんか解放処理みたいなことはしなくてもよさそうに見える。GetStringChars()したらReleaseStringChars()し、GetStringUTFChars()したらReleaseStringUTFChars()しないといかんが、それ以外の文字列操作は気にしなくてよさそうだ。com.jnitest.Jni2AbortedAbortか・・・。したら、パスがわからなくなっているとか?System.load("e:/Prog/Java/JniStudy/2/jnihello.dll");直指定してもだめか。私はひと味違うので、Hello、だけでいいや。何が違うのかはよくわからんけどね。JNIの道もHelloから、だ。com/jnitestディレクトリを作り、そこにJni1.javaというファイルを作る。}}publicが先か、staticが先か・・・しばし悩む。公開属性が先だろうということで、publicにした。com.jnitest.Jni1これで、Helloと出てきた。最初、Main、と書いていて動かなかった。その次は、Jni1ではなくJniと書いていて動かなかった。Linux上で動かしているように見せかけているが、実はWindows上だ。JNIはネイティブ環境だから、プラットフォームを決めないとなぁ。Windowsではめんどくさいので、Linuxとかcygwinがいいのだが。Java2011/03/24[android]あきらめてJavaも少しは勉強しよう今から一杯くらい飲もうかと思ったが、体力が尽きてきた。筋肉を付けるような運動もせんといかんな。NativeActivityはC++で使えるからいいけど、画面を作るのが大変そうだ。それに、文字入力とか考えると、かなり大変そうだ。エンコードもiconvとか使ったりするのは、めんどくさい。Javaをあきらめて少しくらいは勉強せんといかんか、と。書かないと覚えんよな、Java。仕事で書くことがないから、自分で作らないとなぁ。そんなわけで、JavaといえばやはりJNIを最初にやらねばなるまい。JNIでやりたいのは、javahを使わないやり方Nativeからのメンバ変数アクセスNativeからのコールバックといったところだろうか。わからんわからんと、いつも逃げてきたが、4月になるし始めるにはいい季節じゃないだろうか。本で勉強する方が好きなのだが、JNI本って見かけたこと無いなぁ。android2011/03/21[nfc]IDm前にも似たようなことを書いたが、まとめて書いておこう。IDm(NFCID2)についてだ。FeliCaに、IDmという8byteの番号がある。256^8ということで、組み合わせとしてはたくさんある(ルールはあるけど)。値も、FNさんとかが割り振っていたと思う。ユニークか?これは、保証していないとのこと。UIDも同じようなことをいってた。IDmを使ったシステムを作るのはいいけど、セキュリティに関わるような場合には使わないこと。システムの受け手となる人は、見分けないといかんが・・・難しい。携帯電話でも自前のnimocaとかSuicaとかのカードならなんでもOK、というやつは、危ないかも。自前のカードを発行したり、携帯電話ならアプリをインストールするタイプなら安心だと思う。「自分たちでIDmがユニークであることを確認したカードならいいよね?」と思うかもしれないが、そうはいかん。ある程度知識があれば、PaSoRiなどでIDmを自前で作り出すことができるからだ。私ですら、ちょろちょろっと調べればできたのだ。カードからIDmを読むのは、ポーリングすればいいので簡単。なると、ちょっとしたソフトを作れば相手のIDmをコピーすることができてしまう。相手はそんなこと気づきもしないだろう。Liteにはセキュリティ機能があるので、それを使うのがよかろう。手抜きをせずに、ちゃんとやればいいだけだろう。私は持っていないので何とも言えないが。普通のFeliCaカードとかは鍵があるのでさらに安全にアクセスできるのかな。FeliCaの「セキュリティ」はここにあるのだ。誰かがアクセスできるからには、開けられないことはないはずだが、まあ大変だろう。私はそういうのがしたいわけではないので、やらない。これからどうなるのかね。Mifareは巨人としていることだろう。近接型だけでなく近傍型も出てきている。多様化していくのか集約されていくのか。nfc[nfc]おサイフケータイやはり、ちょくちょく見かける、NFCとFeliCaの関係に対する誤認。ここまで多いと、単なる情報不足とは別の原因があるのではないか?と考えたくなる。おサイフケータイについてだ。やっかいなのは、NFCの規格がどこまでなのかがなんかよくわからないところだ。