没有名为 'function' 的模板
No template named 'function'
我正在尝试在 mac 上编译一段用 C++ 编写的代码,并且有一个函数
tuple<string, string, int> getURL(const string& url, const function<void(CURL*)>& opts)
{...}
有错误
no template named 'function'
...int> getURL(const string& url, const funct...
^
我试过修改函数头文件。之后我可以编译那个模块,但是编译器不能 link 和其他模块:
"getURL(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (void*)> const&)", referenced from:
CensysScanner::getHostInfo(Host*) in CensysScanner.cpp.o
DebianLookup::FindVulnerability(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in DebianLookup.cpp.o
DebianLookup::GetChangelog(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in DebianLookup.cpp.o
EnterpriseLinuxLookup::FindVulnerability(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in EnterpriseLinuxLookup.cpp.o
EnterpriseLinuxLookup::GetChangelog(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in EnterpriseLinuxLookup.cpp.o
LooquerScanner::getHostInfo(Host*) in LooquerScanner.cpp.o
ShodanScanner::getHostInfo(Host*) in ShodanScanner.cpp.o
...
我还包含了功能模块 (#include <functional>
) 并且我正在使用 std 命名空间 (using namespace std;
)。
"getURL(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (void*)> const&)", referenced from:
其他目标文件引用的这个符号作为参数 a std::__1::function
。这是标准库中的 std::function
,显然应该引用第一个代码块中的 function
。
检查是否包含 #include<functional>
,您是否使用 C++11 或更高版本进行编译并编写 std::function
而不是 function
或检查您是否有 using
语句将 function
从 std
导入当前命名空间,例如using namespace std;
或 using std::function;
.
与 std::function
一起工作。我不知道为什么需要 std::
,因为在文件顶部告诉了命名空间 (using namespace std;
),但它有效。
我正在尝试在 mac 上编译一段用 C++ 编写的代码,并且有一个函数
tuple<string, string, int> getURL(const string& url, const function<void(CURL*)>& opts)
{...}
有错误
no template named 'function'
...int> getURL(const string& url, const funct...
^
我试过修改函数头文件。之后我可以编译那个模块,但是编译器不能 link 和其他模块:
"getURL(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (void*)> const&)", referenced from:
CensysScanner::getHostInfo(Host*) in CensysScanner.cpp.o
DebianLookup::FindVulnerability(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in DebianLookup.cpp.o
DebianLookup::GetChangelog(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in DebianLookup.cpp.o
EnterpriseLinuxLookup::FindVulnerability(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in EnterpriseLinuxLookup.cpp.o
EnterpriseLinuxLookup::GetChangelog(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, OpSys, double) in EnterpriseLinuxLookup.cpp.o
LooquerScanner::getHostInfo(Host*) in LooquerScanner.cpp.o
ShodanScanner::getHostInfo(Host*) in ShodanScanner.cpp.o
...
我还包含了功能模块 (#include <functional>
) 并且我正在使用 std 命名空间 (using namespace std;
)。
"getURL(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::function<void (void*)> const&)", referenced from:
其他目标文件引用的这个符号作为参数 a std::__1::function
。这是标准库中的 std::function
,显然应该引用第一个代码块中的 function
。
检查是否包含 #include<functional>
,您是否使用 C++11 或更高版本进行编译并编写 std::function
而不是 function
或检查您是否有 using
语句将 function
从 std
导入当前命名空间,例如using namespace std;
或 using std::function;
.
与 std::function
一起工作。我不知道为什么需要 std::
,因为在文件顶部告诉了命名空间 (using namespace std;
),但它有效。