2008-05-28

LabVIEW で複雑な型のポインタを引数に取る DLL 関数を呼び出す

Windows 版の LabVIEW には DLL(Mac なら Dylib、Linux なら共有オブジェクト) を呼び出す機能がありますが、ちょっと貧弱です。複雑な構造体のポインタを引数にとるような関数呼び出しを書けないことがあります。たとえば、こんなの。

void func(Foo* foo) {
  /* ... */
}

ヘッダファイルをたどっていければ、インポートウィザードが自力でなんとかしてくれることもありますが、してくれないこともあります。



Foo の中身が DLL 内で完結していて、LabVIEW から型の詳細を知らなくていいとき(まともなライブラリなら、そうなっているはず)なら、強引に呼び出す方法があります。この引数を、符号なし32ビット整数の値渡しにします。
Calllibraryfunc




ポインタはどうせ32ビット整数なので、細かい内部型なんか気にせずに整数扱いしても大丈夫なことがあります。もちろんメモリ確保を、呼び出し側でする必要があったりとかするので、いつでも使えるわけではありませんが、そういうやりかたもあるってことで。



港区スポーツセンターで泳ぐ 火曜日 18:00

トライアスリートへの道、2日目。港区スポーツセンターへ。18:00 すぎに着きましたが、やっぱりこの時間は込んでいます。子供プールでぷかぷかできないくらい。1コースあたり5人くらいです。200m ほどはトータル・イマージョンで言うところのスケーティングをやって、その後クロール300m。楽に泳げている気がするのは、やっぱり気のせいでしょうか。



2008-05-27

トライアスリートへの道

かれこれ4年くらい「トライアスロンやりたい」と言いつつやっていません。で、強引に7月のちっちゃなレースに申し込んであるのですが、ぜんぜん練習していません。やばい。



というわけで、いちいちここで報告します。これから3週間は、とにかく運動する習慣をつけることに集中します。着替えてちょっとでも走ったら、運動したことにします。



今日は、仕事が終わってからプールへ。子供プールでちゃぷちゃぷ背浮きをしたあと、大人プールで200mほど。4往復かよ。