2009-04-29 21 views
3

C++をコンパイルするときにVisual Studioにタイプ情報を出力させることはできますか? GCCにはGCC-XMLがあり、私はVS2008のために何か類似していると思っていました。C++の情報VS2008から

おかげ

BEN

+0

で元気です。 – Ben

答えて

2

この問題に対する解決策がいくつかあります。

  1. もちろん、XMLのドキュメントがあります。
  2. "C/C++" - >出力ファイル、 "属性付きソースの拡張"、およびさまざまなレベルのアセンブラ出力リストで属性付きソース出力を有効にすることができます。

    残念なことに、これらのメソッドはかなり面倒であり、構造化されていません(構文の手動クラッキング)。

  3. RTTIは、すべてのC/C++プロジェクトでデフォルトで有効になっています。これはC#の振る舞いの先頭に立って、structuredと正確な情報を非常によく抽出するために使用することができます。
  4. 名前麦角は、RTTIが利用できない場合でも存在する可能性があります。 C++バイナリは、ランタイム多形性または他のoo'ness templeate'd機能を有効にする元のコード減速のこのパックされた定式化に依存することができます。とにかく、名前のマングリングについては十分に説明されていませんが、デバッグSDKにAPI呼び出しが存在し、実際にはWindows Win32 APiでも存在します。あなたはまだ未装飾のフォーマットを変換しなければならないかもしれません。いずれにせよ、その時点ではかなり些細なことです。
  5. PDBファイルを使用すると、DIA SDKを使用して、コンパイルしたPDBを問い合わせることができます。 PDBに含まれる情報には、いくつかのレベルの冗長性(公開と非公開)がありますが、それは通常は十分です。
  6. MSRの新世代コンパイラPhoenixを見ると、バイナリ/ソースのイントロスペクション機能が優れています。
  7. CodeDomを使用すると、MSVC SDKおよびドメイン固有言語(DSL)ライブラリを使用して、独自のコードパーサーを簡単に作成できます。
  8. MSVCには実際にはいくつかのオートメーションと非DSL APIがありますが、これはあなたが何かを達成するために使うことができます。とにかく、これらの他のAPIについての例や情報のほとんどはBASICで書かれていますので、あなたがVBを知っていない限り、私はVBコードを見なければなりません。
  9. 私は....に行くことができます;)が、私はそれを明確に私はRTTIを使用できないことを行っている必要があります9.
+0

Ben:RTTIに失敗しました。他にどのような制約がありますか? DIA SDKを試しましたか? Dia2dump.cにはVisual Studioが付属しています。 – RandomNickName42

+0

私はまだこれらのオプションすべてを調査しています(非常に多くの素晴らしいアイデアのおかげで!)。 – Ben

+0

ベン:最近リリースされたこのmingwプロジェクトをチェックしてください。 "MinGW:GNUコンパイラコレクション(GCC)のネイティブWindowsポート。ネイティブWindowsアプリケーションを構築するための自由に配布可能なインポートライブラリとヘッダーファイルがあり、C99機能をサポートするためのMSVCランタイムの拡張が含まれています。" ソースナビゲータの開発チームはNG4と呼ばれるWindows対応のMinGWコンパイル可能なバージョンをリリースした。 http://developer.berlios.de/project/showfiles.php?group_id=8334 Windowsヘッダーとの互換性は、gccxmlポートの互換性よりもよい場合があります。 – RandomNickName42

関連する問題