文句たれ日記飛び地の避難所

文句たれ日記飛び地(http://blog.jiru.com/)のアーカイブ

JNIつづき

<前回のあらすじ>

久しぶりのJava仕事。JNI経由でJavaからWindowsAPIを呼ぼうとした。しかしWin側をC#で作ったらダメでした。

</前回のあらすじ>

仕方なく書いたばかりのC#ソースをVC++に移植。ところが.NETで追加になった文字列Stringクラスと従来の文字列WCHAR、TCHAR、C言語のchar*の変換にユーティリティが無い。だいたい文字列型が4つもあるって何。(実際はCStringやらstd:うんちゃらやらもっとある。バカか。)結局変換ルーチンは自前になったが、そんな事のためにいちいちハンドルを固定とか今時ありえねえ。しかしAPI側は各種文字列型を要求しやがるから変換は必要で。糞。

で四苦八苦して完成した新DLL、Javaで読もうとしたら旧DLLと一緒に読み込めない。片方づつなら大丈夫だけど。なんかVMの制限があるらしい。 え~。

仕方ないので旧DLLに新APIをマージしようとした。どっちもVC++なんだから楽勝だよね?

しかし。VisualStudio2010はそのままでは旧いコードをコンパイルしない。/clr oldSyntaxフラグ付けないと旧来のコードはエラーになる。

と こ ろ が。

oldSyntaxフラグを付けると、今度は新作法でさっき書いたばかりのコードがコンパイルできない。あほか~! どないせーっちゅうねん。 ここでパソコンを蹴り倒して酒を飲んでしまうのが正しい大人の対処という物だが、しかし今日は28日(これ書いてる時点では29日だが)、当社の仕事納め。今日中に終わらせないと各方面にしわ寄せが行くのだ。とりあえず号泣してみる。メソメソ。 って号泣じゃないし。

いったん色々リセット。まずは最近お気に入りの神のみCDから「ダーリンベイビ(東山奈央)」をループに設定する。ワタシの場合これで30分もすると脳みそが麻痺状態になり曲が聞こえなくなる。こうなればしめたものでコーディングが苦痛にならなくなる。我ながら何故だ。(ちなみに初代ループ曲はビートルズの「Help!」だった。)

で、やることは旧ソースを.NETで書き直す事だ。シラフじゃやってらんねえので酒の代わりに音。何せ.NETになってからはずっとC#な人だったので、まさか.NETのVC++がこんなにグチャグチャになってるとは思いもせず、さくさく進まない。マイクロソフト本当うんこ。

ついでに昨日は効いていたブレークポイントが今日は止まらなくなった。Web見てみたらVisualStudioのバグでもう何年も解決されていないらしい。なんだそれ。プロジェクト作り直せとかあるけど、そうした所でまた再現する訳で意味ない。ついでにエディタのコード補完も無いも同然だし。こんな開発環境が何十万円もするんだぜ? 押し売りの羽毛布団のほうが役にたつぞ? 消費者センターに文句言っても良いレベル。まだ腐ったXcode4の方がマシ。(最近そんな環境ばっかだ。しくしく)

簡単なソースなのに遅々として捗らず、とは言えなんとか先ほどテスト完。一日が長かった。ガキ共は横でやれリオレイア亜種だのラギアクルスだのと騒いでいたが、相手してやれなかった。これも全てゲイツのせいだ。

よし、終わった。アップロードした。

でも寝られない。いったん脳みそをトランスに持って行くと、数時間クールダウンしないと絶対寝付けない。これやる度に絶対寿命縮んでる。

とりあえず明け方までフルメタでも読むか。