DOSプロンプトは&で命令を繋げられる

タイトルの通りですが、DOSプロンプトでは「」を使って命令を繋げることが出来ます。
簡単な例では
> cd windows & dir
とするとwindowsという名前のディレクトリに移動した後、dirコマンドを実行します。
此処までは分かっていたのですが・・・

続きを読む

Visual Studio 2005にサービスパックを当てると、Cランタイムがアップデートされる

サービスパックを当てると、自分の作ったアプリケーションが他の環境で動作しなくなります。最近ハマりました。(5分で解決したけど)
何故、動作しないかというと、C++のランタイムのバージョンが微妙に上がっているからです。

続きを読む

プログラムの実行時間を計測する

Windowsでプログラムの実行時間を計るのは簡単ではありません。他のスレッドが計測の邪魔をするからです。
最初に確認しなくてはならない事は、実行時間を計測するために、ソースコードを修正できるか否かです。
前者の場合は、Kernrateパフォーマンスカウンタを使うのが一般的です。
ここでは後者の状況について詳しく検討していきます。

続きを読む

stringstreamの衝撃

iostream系は引数が覚えにくいという理由で使ってません。
しかし、気まぐれで使ったstringstreamでちょっとした衝撃を受けました。簡易再現コードは以下の通り。

int i;
double d;
stringstream sstr;
sstr << "10.25";
sstr << "10.50";
sstr >> i;
sstr >> d;

個人的に期待した動作はi=10、d=10.5でしたが・・・

続きを読む

.manifest?.local?.config?

最近のVisual Studioで開発を行うと勝手にできてしまうんです、とか言われました。
これらは全て、アプリケーションが使うDLLの選定に関係しますので覚えてください。
以下、解説していきますが、答えを見るまえに自分で考えてみてください。

続きを読む

ngenの引数はバージョン間で異なる

MSILなコードを高速化する手段の1つとしてネイティブコードジェネレータ(ngen)があります。
その名のとおり、MSILをx86等に予めコンパイルしてキャッシュしておくわけですが、何故か.NET Framework 1.1と2.0では引数が異なるのです。

続きを読む

Disposeの実装

Disposeの役目はなんでしょうか?マニュアルを見ても良く書かれてないように思います。ここでは、一般的な解釈を述べます。
.NET Framework 全体で考え方が統一されているかは別として、Disposeという言葉を聞くようになったのは、ガベージコレクタを使った言語です。
まずはDisposeの英語としての意味をおさらいしましょう。ここでは「処分する」が適切です。使わなくなったオブジェクトは「処分する」必要があります。じゃあ、ガベージコレクタは、何時処分すればいいのでしょうか?
そのヒントを与えるメソッドがDisposeです。

続きを読む

特定のDLLを利用しているプロセスを探す

DLLを消そうとしているときに使用中です、などと言われても困ってしまいます。効率よく探したくても、そのPCにProcess Explorerが入っているなんて幸運もそうないわけです。
ここは組み込みのコマンドでの消し方を覚えておくとよいでしょう。
具体的にはtasklisttaskkillを使います。
タスクマネージャのコンソール版ですが、本家にない強力なフィルタ機能が存在します。
※ 動作はXP以上を確認していますが、2000のリソースキットにも入っていた気がします。

続きを読む

DLL単体からLIBを作る

LIBが欲しいんだけど、DLLしかないと言われました。そんなとき、貴方ならどうしますか?

  • Win32APIで提供されているLoadLibrary、GetProcAddressを使えと説得する
  • LIBファイルを自力で作る

ここでは、後者の方法について紹介します。

続きを読む

.NET Framework 3.0が利用可能に

今日気づいたのですが、.NET Framework 3.0が出たようです。
ダウンロード先は以下の通り。

いつものごとく、SDKにはランタイムが含まれないため、開発者は両方ダウンロードする必要があります。

続きを読む