C++ Libclang解析错误
我将libclang与qt结合使用,以便为我的自定义IDE创建自动完成功能 我做了这个功能:C++ Libclang解析错误,c++,qt,libclang,C++,Qt,Libclang,我将libclang与qt结合使用,以便为我的自定义IDE创建自动完成功能 我做了这个功能: QList code工具::自动完成(QString内容、QTextCursor光标、QString文件路径、QStringList选项) { QList-lst; QTemporaryFile文件; file.open(); QTextStream流(&文件); 流我使用parseTranslationUnit而不是parseTranslationUnit2 CXTranslationUnit tu
QList code工具::自动完成(QString内容、QTextCursor光标、QString文件路径、QStringList选项)
{
QList-lst;
QTemporaryFile文件;
file.open();
QTextStream流(&文件);
流我使用parseTranslationUnit
而不是parseTranslationUnit2
CXTranslationUnit tu = clang_parseTranslationUnit(index, file.fileName().toStdString().c_str(), args, 3, NULL, 0, CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete);
if (tu == NULL){
return lst;
}
值1
绝对是“有效的”,它意味着cxrerror\u Failure
。我认为您需要从文件.filenmae().toStdString().c_str()
复制字符串[或者将其准确地传递给函数,以便编译器知道如何保留它],这解释了它发生变化的原因。一旦传入了正确的文件名,您应该使用clang_getdiagnostic
和friends来找出您遇到的错误(如果有)。
CXTranslationUnit tu = clang_parseTranslationUnit(index, file.fileName().toStdString().c_str(), args, 3, NULL, 0, CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete);
if (tu == NULL){
return lst;
}