C中存在未定义的引用错误
Undefined reference error in C
我正在使用C库antlr3c。我使用:sudo apt-get-install libantlr3c-dev 安装库
#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:对"antlr3StringStreamNew"的未定义引用
我不知道如何解决这个错误,因为antlr3defs.h中确实声明了antlr3StringStreamNew。尽管我找不到它的定义。
如果这与antlr3c的3.4版本不兼容有关(因为我已经安装了3.2版本)。如果确实是这样,那么在antlr3c3.4版本中是否有任何替代功能可以让我实现相同的功能。
Keith是对的-由于C++名称篡改,您使用的链接器需要不同的符号。因此,尽管您的代码将进行编译,但在链接阶段,它会因该错误而失败。
如果你像这样包围你的头include,链接器应该找到符号:
extern "C" {
#include "antlr3defs.h"
}
结果是,您的代码使用对C样式函数名的引用进行编译,从而允许链接器将它们与antlr3库的对象文件中的相应符号进行匹配。
相关文章:
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- C++引用错误
- 已定义函数时出现 G++ "未定义的引用"错误
- 链接 cmake 时出现未定义的引用错误
- 只有级联分类器会发出未定义的引用错误
- 2个模板化类的非模板友元函数未定义引用错误
- C/C++ 取消引用错误:在空检查之前取消引用
- 为什么我的C++代码无法编译,出现未定义的引用错误
- 我的代码中C++未定义的引用错误?
- 模板专用化会导致未定义的引用错误
- .cpp文件中未定义的引用错误
- c++ 中目录中文件的未定义引用错误
- Opencv4 使用 pkg-config 给出未定义的引用错误
- 使用Cygwin C++时出现未定义的引用错误,为什么我的文件没有链接?
- 共享指针取消引用错误
- 编译简单的多文件类程序时出现未定义的引用错误
- 模板函数产生未定义的引用错误
- 调用提取重加载器会产生对"运算符"的未定义引用错误>>
- 如何修复"未定义的引用"错误 opencv 和 g++
- 未定义的引用错误,我该怎么办?