Я использую библиотеку C antrr3c. Я установил библиотеку с помощью: Sudo APT-получить установку libantlr3c-DEVНеопределенная ошибка ссылки в C
#include "antlr3defs.h"
..
string DBparser::sparqlParser(const string& _sparql, SPARQLquery& _sparql_query)
{
pANTLR3_INPUT_STREAM input;
pSparqlLexer lex;
pANTLR3_COMMON_TOKEN_STREAM tokens;
pSparqlParser parser;
input = antlr3StringStreamNew((ANTLR3_UINT8 *)(_sparql.c_str()),ANTLR3_ENC_UTF8,_sparql.length(),(ANTLR3_UINT8 *)"QueryString");
}
Когда я запускаю программу, содержащую вышеуказанный фрагмент, я получаю ошибку: NetBeansProjects/gstore/PARSER/DBparser.cpp: 25: неопределенная ссылка to `antlr3StringStreamNew '
Я не понимаю, как разрешить эту ошибку, поскольку antlr3StringStreamNew действительно объявлен в antlr3defs.h. Хотя я не могу найти его определения.
Если это связано с несовместимостью с версией 3.4 antlr3c (как я установил версию 3.2). Если это действительно так, есть ли альтернативная функция в версии antlr3c версии 3.4, с помощью которой я могу достичь такой же функциональности.
Как вы строите свою программу? – user58697
Я скептически отношусь к тому, что вы получаете эту ошибку, когда * запускаете * программу; он больше похож на ошибку компоновщика. Обновите свой вопрос, чтобы показать нам, как вы создали программу. Вероятно, вам просто нужно добавить параметр '-l ...' при создании, поэтому компоновщик знает, где найти библиотеку, которая определяет 'antlr3StringStreamNew'. Возможно, вам также понадобится сделать что-то, что позволит вам вызвать функцию в C-библиотеке из кода на C++; у 'antlr3defs.h' есть требуемый' extern 'C "'? –
@Keith Фактически эта функция изменилась с 3.2 до 3.4, как видно из ответа пользователя на https://theantlrguy.atlassian.net/wiki/display/ANTLR3/Five+minute+introduction+to+ANTLR+3 –