さくらんぼのlambda日記

lambdaちっくなことからゲーム開発までいろいろ書きます。

Visual Studio 付属のプログラムまとめ

MSDNに基本的に載っているのですが、どういう物があるのか今まで把握していなかったので調べてみました。

bscmake.exe

MSDNによると、Microsoft Browse Information Maintenance Utilityらしい。
http://msdn.microsoft.com/ja-jp/library/87x7wc99(v=vs.80).aspx

シンボルの参照用としてブラウザ データベースを作成するために、コンパイラではプロジェクトのソース ファイルごとに .sbr ファイルが作成され、BSCMAKE.EXE ではそれらの .sbr ファイルが 1 つの .bsc ファイルに連結されます。

http://msdn.microsoft.com/ja-jp/library/f403he0y(v=vs.80).aspx

調べてみたけどbscmakeが何をするのかはっきりしないですね。ブラウザ情報ファイルって何。

cvtres.exe

@ITの記事に依ると、Windows Resource To Object Converterらしいです。
http://www.atmarkit.co.jp/fdotnet/special/dotnet_sdk/dotnetsdk04.html

あとは、MSDNのページに以下のような文脈がありました。

プログラムをリンクするときは、入力ファイルとしてリソース ファイル (.res) を指定できます。.res ファイルは、リソース コンパイラ (RC: Resource Compiler) が作成したファイルです。LINK は、.res ファイルを自動的に COFF 形式に変換します。したがって、CVTRES.exe ツールは、LINK.exe と同じディレクトリか、環境変数 PATH で指定したディレクトリに置く必要があります。

http://msdn.microsoft.com/ja-jp/library/kcz8ck35(VS.80).aspx

実際に動作させていないので確信はできないですが、resをCOFFに変換するプログラムがcvtresなのかなぁ。

dumpbin.exe

Microsoft COFF Binary File Dumper (DUMPBIN.EXE) は、COFF (Common Object File Format) 形式のバイナリ ファイルに関する情報を出力します。DUMPBIN を使うと、COFF オブジェクト ファイル、COFF オブジェクトの標準ライブラリ、実行可能ファイル、およびダイナミック リンク ライブラリ (DLL) の内容を確認できます。

http://msdn.microsoft.com/ja-jp/library/c1h23y6c(v=vs.80).aspx

なるほど。
使い方は以下にまとまってます。
http://msdn.microsoft.com/ja-jp/library/20y05bd5(v=vs.80).aspx
http://msdn.microsoft.com/ja-jp/library/c1h23y6c(v=vs.80).aspx
http://msdn.microsoft.com/ja-jp/library/756as972(v=vs.80).aspx

editbin.exe

EDITBIN.EXE (Microsoft COFF Binary File Editor) は、COFF (Common Object File Format) 形式のバイナリ ファイルの内容を変更するツールです。EDITBIN を使用すると、オブジェクト ファイル、実行可能ファイル、およびダイナミック リンク ライブラリ (DLL) の内容を変更できます。

http://msdn.microsoft.com/ja-jp/library/xd3shwhf(VS.80).aspx

なにそれ怖い。
動かなくできたりするの?
違うみたい。オプション眺めてると納得。
http://msdn.microsoft.com/ja-jp/library/d25ddyfc(v=VS.80).aspx

lib.exe

Microsoft Library Manager (LIB.exe) は、COFF (Common Object File Format) オブジェクト ファイルのライブラリを作成したり、管理したりするためのツールです。LIB では、エクスポート ファイルとインポート ライブラリも作成できるので、エクスポートされた定義を参照できます。

http://msdn.microsoft.com/ja-jp/library/7ykb2k5f(v=vs.80).aspx

ml.exe

MASMの記事ばっかりひっかかる。
どうやらこれがアセンブラかな。
http://msdn.microsoft.com/ja-jp/library/s0ksfwcf(v=vs.80).aspx
そうみたい。

undname.exe

undname.exe を使用すると、装飾名を装飾されていない形式に変換できます。この例を次に示します。

C:\>undname ?func1@a@@AAEXH@Z
Microsoft (R) C++ Name Undecorator
Copyright (C) Microsoft Corporation 1981-2000. All rights reserved.Undecoration
of :- "?func1@a@@AAEXH@Z"
is :- "private: void __thiscall a::func1(int)"

http://msdn.microsoft.com/ja-jp/library/5x49w699(VS.80).aspx

xdcmake.exe

XDCMake Referencexdcmake.exe is a program that compiles .xdc files into an .xml file. An .xdc file is created by the Visual C++ compiler for each source code file when source code is compiled with /doc and when the source code file contains documentation comments marked up with XML tags.

http://msdn.microsoft.com/en-us/library/ms177247(v=vs.80).aspx
doxgenみたいなものかなぁ……?

http://msdn.microsoft.com/en-us/library/ms177227(v=vs.80).aspx
http://msdn.microsoft.com/en-us/library/ms177228(v=vs.80).aspx

おぉ。そうっぽい。

コード例

// xml_c_tag.cpp
// compile with: /doc /LD
// post-build command: xdcmake xml_c_tag.dll

/// Text for class MyClass.
class MyClass {
public:
   int m_i;
   MyClass() : m_i(0) {}

   /// <summary><c>MyMethod</c> is a method in the <c>MyClass</c> class.
   /// </summary>
   int MyMethod(MyClass * a) {
      return a -> m_i;
   }
};