2011年10月24日月曜日

CLangでクラスの中身を調べる:Rebuild(3)

環境をVS2010に移行したら、リンクエラーが大量に・・・プロジェクトの依存関係を構築しただけではlibをリンクしてくれないらしい。以下のようにリンク設定を記述した。

..\build\lib\debug\LLVMSupport.lib
..\build\lib\debug\LLVMCodeGen.lib
..\build\lib\debug\LLVMMC.lib
..\build\lib\debug\clangBasic.lib
..\build\lib\debug\clangFrontend.lib
..\build\lib\debug\clangAnalysis.lib
..\build\lib\debug\clangLex.lib
..\build\lib\debug\clangSema.lib
..\build\lib\debug\clangAST.lib
..\build\lib\debug\clangParse.lib


前回のコードで、clang::Type::Recordに該当するもののみをダンプするよう修正してみた。こんなコードで

clang::ASTContext::const_type_iterator t = astContext.types_begin();
clang::ASTContext::const_type_iterator eot = astContext.types_end();
for(; t != eot; ++t)
{
 if(clang::Type::Record == (*t)->getTypeClass())
 {
  (*t)->dump();
 }
}

こんなソースコードを食わせると

#include <cstdio>

int main(int, char**)
{
 std::printf("Hello,world\n");
 std::getchar();
 return 0;
}

こんな結果。

: class type_info identifier
: struct threadlocaleinfostruct identifier
: struct threadmbcinfostruct identifier
: struct __lc_time_data identifier
: struct localeinfo_struct identifier
: struct tagLC_ID identifier
: struct threadlocaleinfostruct::<anonymous (x86)\microsoft="" 8\vc\include="" at="" c:\program="" crtdefs.h:2063:9="" files="" studio="" visual=""> identifier
: struct lconv identifier
: class std::_Lockit identifier
: class std::_Mutex identifier
: class std::_Init_locks identifier
: struct _iobuf identifier

0 件のコメント:

コメントを投稿