c – 编译错误:命名空间’std’中的”function’未命名模板类型
发布时间:2020-12-16 10:03:59 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 libtins 库来嗅探我的网络流量.所以我下载了tar.gz库,并成功完成了手册中提到的所有库编译步骤. 现在,我正在尝试编译我的第一个示例程序: 1 #include iostream 2 #include tins/tins.h 3 4 using namespace Tins; 5 6 bool callback(const P
我正在尝试使用
libtins库来嗅探我的网络流量.所以我下载了tar.gz库,并成功完成了手册中提到的所有库编译步骤.
现在,我正在尝试编译我的第一个示例程序: 1 #include <iostream> 2 #include <tins/tins.h> 3 4 using namespace Tins; 5 6 bool callback(const PDU &pdu) { 7 const IP &ip = pdu.rfind_pdu<IP>(); // Find the IP layer 8 const TCP &tcp = pdu.rfind_pdu<TCP>(); // Find the TCP layer 9 std::cout << ip.src_addr() << ':' << tcp.sport() << " -> " 10 << ip.dst_addr() << ':' << tcp.dport() << std::endl; 11 return true; 12 } 13 14 int main() { 15 Sniffer("eth0").sniff_loop(callback); 16 } 当我想编译它时,我面临以下错误: me@me-MS-7693:~/Desktop/Workspace/cpp_libtins$g++ main.cpp -ltins In file included from /usr/local/include/tins/tins.h:60:0,from main.cpp:2: /usr/local/include/tins/crypto.h:297:18: error: ‘function’ in namespace ‘std’ does not name a template type typedef std::function<void(const std::string&,^ /usr/local/include/tins/crypto.h:308:18: error: ‘function’ in namespace ‘std’ does not name a template type typedef std::function<void(const std::string&,^ /usr/local/include/tins/crypto.h:401:44: error: ‘handshake_captured_callback_type’ does not name a type void handshake_captured_callback(const handshake_captured_callback_type& callback); ^ /usr/local/include/tins/crypto.h:412:34: error: ‘ap_found_callback_type’ does not name a type void ap_found_callback(const ap_found_callback_type& callback); ^ /usr/local/include/tins/crypto.h:445:9: error: ‘handshake_captured_callback_type’ does not name a type handshake_captured_callback_type handshake_captured_callback_; ^ /usr/local/include/tins/crypto.h:446:9: error: ‘ap_found_callback_type’ does not name a type ap_found_callback_type ap_found_callback_; ^ me@me-MS-7693:~/Desktop/Workspace/cpp_libtins$ 怎么了? 我的编译器版本: me@me-MS-7693:~/Desktop/Workspace/cpp_libtins$g++ --version g++ (Ubuntu 5.4.0-6ubuntu1~16.04.2) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation,Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. me@me-MS-7693:~/Desktop/Workspace/cpp_libtins$ 解决方法
由于您的GCC早于6.0,您需要传递-std = c 11开关,otherwise it is in C++03 mode.C 03没有std :: function.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |