我使用libclang和qt来为我的定制IDE创建自动完成功能。
我做了这个功能:
QList<CompleterItem> CodeTool::autocompletion(QString content, QTextCursor cursor, QString filepath, QStringList options)
{
QList<CompleterItem> lst;
QTemporaryFile file;
file.open();
QTextStream stream(&file);
stream << content;
const char* filen = file.fileName().toStdString().c_str();
CXIndex index = clang_createIndex(0, 0);
const char* args[] = {"-x", "c++" };
qDebug() << filen;
CXTranslationUnit tu = NULL;
CXErrorCode err = clang_parseTranslationUnit2(index, filen, args, 2, NULL, 0, CXTranslationUnit_PrecompiledPreamble | CXTranslationUnit_Incomplete, &tu );
qDebug() << filen;
if (err != 0){
qDebug() << err;
return lst;
}
// some things ....
}但不起作用。输出显示错误代码=1( libclang文档中的未知错误)。此外,在调用解析函数之前和之后对filen进行了修改。示例:
C:/Users/Yoann/AppData/Local/Temp/plugin-test.Ns4152 C:\Dev\Qt\Qt5.5.0\Tools\mingw492_32\include\c++\4.9.2
谢谢,
发布于 2015-09-17 17:41:05
我用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;
}https://stackoverflow.com/questions/32602498
复制相似问题