C++ C++;函数的未定义引用错误,即使该函数已存在
我在错误下面 Focus//build/libfocus.a(FocusParser.o):在函数C++ C++;函数的未定义引用错误,即使该函数已存在,c++,undefined-reference,C++,Undefined Reference,我在错误下面 Focus//build/libfocus.a(FocusParser.o):在函数FocusParser::parse(std::string const&)中: /builddir/project/src/Focus/FocusParser.cpp:22:未定义对yyFC_scan_bytes(char const*,int)”的引用 代码如下。如代码所示,函数已经在第12行定义。请帮忙 1 #include <stdio.h> 2 #include <
FocusParser::parse(std::string const&)中:
/builddir/project/src/Focus/FocusParser.cpp:22:未定义对
yyFC_scan_bytes(char const*,int)”的引用
代码如下。如代码所示,函数已经在第12行定义。请帮忙
1 #include <stdio.h>
2 #include <errno.h>
3 #include <string.h>
4
5 #include "Exception.h"
6 #include "Builder.h"
7
8 #include "FocusParser.h"
9 #include "FocusState.h"
10
11 int yyFCparse();
12 int yyFC_scan_bytes(const char *bytes, int len);
13
14 FocusStatePtr FocusParser::parse(const string &query)
15 {
16 // mutex lock for focus
17 boost::mutex::scoped_lock lock(gFocusStateMutex);
18
19 // setup parse context
20 gFocusState = FocusStatePtr(new FocusState());
21
22 yyFC_scan_bytes(query.data(), query.length());
23
24 yyFCparse();
25
26 // reset global state info
27 FocusStatePtr result = gFocusState;
28 gFocusState.reset();
29
30 return result;
31 }
1#包括
2#包括
3#包括
4.
5#包括“Exception.h”
6#包括“Builder.h”
7.
8#包括“FocusParser.h”
9#包括“FocusState.h”
10
11 int yyFCparse();
12个整数yyFC_扫描字节(常量字符*字节,整数长度);
13
14 FocusStatePtr FocusParser::parse(常量字符串和查询)
15 {
16//用于聚焦的互斥锁
17 boost::mutex::作用域锁定锁(gFocusStateMutex);
18
19//设置解析上下文
20 gFocusState=FocusStatePtr(新FocusState());
21
22 yyFC_扫描_字节(query.data(),query.length());
23
24 yyFCparse();
25
26//重置全局状态信息
27聚焦状态PTR结果=gFocusState;
28 gFocusState.reset();
29
30返回结果;
31 }
第12行有yyFC_scan_字节的声明,它基本上向编译器保证可以使用带有该信号的函数,并且它的定义将在以后提供,可能在链接时提供
您可能没有将程序与函数的有效定义相链接,因此出现了错误消息-编译器在代码中保留了一个位置,它想调用yyFC_scan_字节的实现,但您没有提供该实现,链接器对此表示不满。where is
int yyFC_scan_字节(const char*bytes,int len)
defined?您已经声明了该函数,但它的定义在哪里?@FoggyDay,“const char*”和“char const*”是一样的。