libclang ライブラリに関するチュートリアルを開始しようとしていますが、関数を呼び出すとアクセス違反が発生しますclang_getSpellingLocation()
。エラーに関するその他の情報は、エラー数、行、および列で正しく報告されます。
私の環境:C++Builder XE pro、Windows 7 32bit、LLVM 3.4、coff2omfで変換したlibCLang.lib、libCLang.dll。
Visual C++ 2010 で同じコードをテストしたところ、正しく動作しました。
この問題について誰か助けてくれませんか?
私の簡単なコード
//---------------------------------------------------------------------------
void __fastcall TForm8::Button1Click(TObject *Sender)
{
unsigned line, column;
CXIndex index = clang_createIndex(0, 0);
const char * args [] = {
"-I/usr/include" ,
"-I."
};
int numArgs = sizeof ( args ) / sizeof ( * args );
CXTranslationUnit tu = clang_parseTranslationUnit(index, "G:\\projects\\LibCLang \\File2.cpp", args, numArgs, NULL, 0, CXTranslationUnit_None);
unsigned diagnosticCount = clang_getNumDiagnostics ( tu );
for ( unsigned i = 0 ; i < diagnosticCount ; i++ )
{
CXDiagnostic diagnostic = clang_getDiagnostic ( tu , i );
CXSourceLocation location = clang_getDiagnosticLocation(diagnostic);
clang_getSpellingLocation(location, NULL, &line, &column, NULL);
CXString text = clang_getDiagnosticSpelling(diagnostic);
UnicodeString s = clang_getCString(text);
}
}