Winpcap _W64 Error

  今天真郁闷,第一次用Winpcap,竟然为一个错误折腾了半天。错误信息如下:

   pcap-stdinc.h(76) : error C2054: expected '(' to follow '_W64

  error C2085: 'uintptr_t' : not in formal parameter list

  error C2628: '_W64' followed by 'int' is illegal (did you forget a ';'?)

 

找了N长时间不知所云,大多是说怎么配置,好不容易,说是:VC6.0不支持。不过,也不知道,VC6.0 怎么配置才支持,

哪位知道了,别忘了说声。QQ:397600497

 

解决方法

在pcap.h 文件头增加如下定义:

#define _W64
#include <pcap/pcap.h>

也就是在#include <pcap/pcap.h>定义前面加上#define _W64 就可以了!

 

解决了 开发环境:VS6.0;

 

在这里谢谢,我的好多朋友的指点,谢谢!

 


 

 

 

### 如何在 VSCode 中配置和使用 WinPcap 进行网络抓包或开发 #### 安装必要的工具和库 为了能够在 Windows 上通过 Visual Studio Code 使用 WinPcap 库进行网络抓包或开发,需要先安装一些必备组件。 确保已经安装了 MinGW-w64 编译器套件以及相应的构建工具链。这可以通过 Chocolatey 或者其他软件管理工具来完成[^3]。 接着需下载并安装最新的 WinPcap 开发包 (Developer's Pack),可以从官方网站获取最新版本。该包内含头文件 (.h) 和静态链接库 (.lib),对于 C/C++ 项目来说非常重要。 #### 设置 VSCode 工作区 打开目标工作目录作为新的 VSCode 工程,在 `.vscode` 文件夹下创建 `c_cpp_properties.json`, `tasks.json` 及 `launch.json` 来定义编译选项、调试参数等设置: ##### c_cpp_properties.json 此 JSON 文件用于指定 IntelliSense 的路径和其他属性以便正确解析代码中的包含指令。 ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**", "C:/path/to/wpcap/Include" ], "defines": [], "compilerPath": "C:\\MinGW\\bin\\gcc.exe", // 调整为实际位置 "intelliSenseMode": "gcc-x64", "browse": { "path": ["${workspaceRoot}", "C:/path/to/wpcap"], "limitSymbolsToIncludedHeaders": true, "databaseFilename": "" } } ] } ``` ##### tasks.json 这里定义了一个简单的 GCC 构建任务用来编译程序;记得修改 `"command"` 字段指向本地的 gcc 实际路径,并调整 `-L` 参数后的库搜索路径以匹配自己的 WinPcap 安装情况。 ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "gcc", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe", "-lwpcap", "-lpacket", "-I\"C:\\Program Files\\WinPcap\\Include\"", "-L\"C:\\Program Files\\WinPcap\\Lib\"" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] } ``` ##### launch.json 最后一步是配置启动项,允许直接从编辑器内部运行和调试应用程序。同样需要注意的是,应根据实际情况更改可执行文件的位置。 ```json { "version": "0.2.0", "configurations": [ { "name": "(Windows) Launch", "type": "cppdbg", "request": "launch", "program": "${fileDirname}\\${fileBasenameNoExtension}.exe", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",// 修改成你的GDB路径 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" } ] } ``` #### 测试环境有效性 编写一段简单的小例子验证上述配置是否成功。尝试捕获本机接口上的数据包并将它们打印出来。如果一切正常,则应该能够看到类似下面这样的输出而没有任何严重错误提示: ```c #include <stdio.h> #include <pcap.h> void packet_handler(u_char *param, const struct pcap_pkthdr *header, const u_char *pkt_data); int main() { char errbuf[PCAP_ERRBUF_SIZE]; pcap_if_t *alldevs; pcap_if_t *d; /* 获取设备列表 */ if (pcap_findalldevs(&alldevs, errbuf) == -1){ fprintf(stderr,"Error in pcap_findalldevs: %s\n",errbuf); return(2); } d=alldevs; printf("\nDevice opened: %s\n", d->name); pcap_freealldevs(alldevs); return 0; } ``` 当以上步骤完成后,即可开始基于 WinPcap 展开更复杂的功能实现与应用开发了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值