gpt4 book ai didi

c++ - 编译错误 : "‘function’ in namespace ‘std’ does not name a template type"

转载 作者:太空狗 更新时间:2023-10-29 20:10:29 24 4
gpt4 key购买 nike

我正在尝试使用 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

关于c++ - 编译错误 : "‘function’ in namespace ‘std’ does not name a template type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39571199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com