2002-06 << 2002-07 >> 2002-08

2002-07-11 (木)

*片付け

今日も部室を片付けに学校に行ってくる.初めて物理無線の部室に入る.暑そうだったけどパソコンもあって快適そう.って,物理無線ぶって去年から部員がいないんですよね.というより,生地部,化学部と一緒に合併して,科学部になったんだから,ここも科学部の領地なんだろうか?片付けていると怪しい薬品の入ったガラスの容器が…何かのサンプルなのか,密閉してあって容器を割らないと出せないようになっている.先生もなんだか分からないらしい.しかも容器の保護のためか周りにおが屑がつめてある.3種類あったが,1種類はどうも濃硫酸っぽい.他には何も入っていないとはいえないけど….あとの2種類は全く分からない.白い沈殿のある液体と,褐色(?)っぽい液体.他にも高価そうなものがたくさん出てきた.

BCCをダウンロードしてきて色々やる.とりあえず,BCCで作ったDLL内のクラスのメンバをVC++側から直接呼び出す方法を探す.そのまま都合よく呼び出せないかと思ったが,メンバの呼び出しに失敗する.クラスになにかつければ良いだけかと思って色々調べたが,良く分からない.調べてて知ったんですが,__declspec(dllexport)ってクラスにも使えるんですね.良く分からないけど機会があったら試してみよっと.で,とりあえずメンバを呼び出せないということなので,全てのメンバに__cdeclをつける.一度,デストラクタに__cdeclを付けられない…と思ったが,つける必要は無かった.クラスの生成と消去はDLL側からするからコンストラクタとデストラクタはそのままで良い.で,無事にBCCでコンパイルしたクラスをVC++で使うことが出来た.多分,逆も平気だろう.これで安心して金魚鉢のプラグインに使える.あと,BCCってエクスポートした関数をWINAPIにすると,標準で関数名がそのままエクスポート名になるんですね.こっちのがいいかも….

いろいろ試してみると,BCCだと標準でメンバの呼び出し規約は__cdeclになって,VC++は独自の(?)呼び出し方法みたいです.なので,stdcallかcdeclを明示的に指定しておいた方が良さそうです.どっちに統一するのが良いのかなぁ.__stdcallの方が効率がいい気がするからこっちも良さそう.メンバ関数のパラメータを増やしたくなることはなさそうだし….もうちょっと考えてみるか.ただどっちの説明を読んでも「Microsoft 固有の仕様」なんて文字列が…怖いなぁ.それとクラス単位で__stdcallとかを指定できると楽なんだけど….

クイズ:一つの温度一定の容器内に水蒸気・水・氷が共存している場合がありえるか?