【发布时间】:2020-03-24 23:48:21
【问题描述】:
#include <iostream>
#include <tins/tins.h>
using namespace Tins;
using namespace std;
bool callback(const PDU& pdu) {
// Find the IP layer
const IP& ip = pdu.rfind_pdu<IP>();
// Find the TCP layer
const TCP& tcp = pdu.rfind_pdu<TCP>();
cout << ip.src_addr() << ":" << tcp.sport() << " -> "
<< ip.dst_addr() << ":" << tcp.dport() << endl;
return true;
}
int main() {
Sniffer("eth0").sniff_loop(callback);
}
我有默认代码 libtins 给你,但由于某种原因 Sniffer 未定义。我已在链接器中包含所有库。
在我构建时它也给了我以下错误:
-- Build started: Project: Packet Sniffing, Configuration: Debug x64 ------
1>Packet Sniffing.cpp
1>C:\Users\usr\Documents\Code\C++ Projects\static\libtins\include\tins\macros.h(37,10): fatal error C1083: Cannot open include file: 'tins/config.h': No such file or directory
1>Done building project "Packet Sniffing.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我检查过,没有名为config.h 的文件,但是有一个名为config.h.in 的文件。当我删除 .in 时,它又给了我一个错误:
1>------ Build started: Project: Packet Sniffing, Configuration: Debug x64 ------
1>Packet Sniffing.cpp
1>C:\Users\usr\Documents\Code\C++ Projects\static\libtins\include\tins\config.h(5,1): fatal error C1021: invalid preprocessor command 'cmakedefine'
1>Done building project "Packet Sniffing.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
我在their website 上唯一不明白的指令是他们说的时候
您还需要将此宏定义添加到您的项目中:
TINS_STATIC
我不完全知道这意味着什么,所以这也可能是问题所在。
提前致谢!
【问题讨论】:
-
请将您的代码提供为文本,而不是图像。你是如何构建/安装 libtins 的?
-
听起来您正在尝试从源代码编译 libtin。通常在初始构建配置期间使用像 config.h.in 这样的文件来生成 config.h。您是否按照这些说明进行操作(调用 cmake 来设置初始构建配置)? libtins.github.io/download/#compiling-windows
标签: c++ network-programming visual-studio-2019 libtins