【发布时间】:2013-12-31 03:44:09
【问题描述】:
我真的是 OCaml 的新手,我想尝试使用 pcap 做一些工作作为入门的一种方式,只是,似乎没有维护它的库。在看了这本很棒的 Real World OCaml 书之后,我想我会尝试编写一个绑定。
这是(糟糕的)代码 sn-p:
open Ctypes
open Foreign
open PosixTypes
let char_ptr = " "
let pcap_lookupdev = foreign "pcap_lookupdev" (string @-> returning string_opt)
let result = pcap_lookupdev char_ptr
let test2 =
match result with
| None -> char_ptr
| Some str -> str
;;
print_string test2;;
pcap_lookupdev 函数返回包含设备名称的字符串或空指针。那一点似乎工作正常(尽管我知道我的代码几乎不是惯用的)。
在用 C 语言编写时,您需要提供一个字符数组来保存任何错误消息。所以如果返回一个空指针,你应该失败,原因保存在这个字符数组中。此字符数组的长度应为“PCAP_ERRBUF_SIZE”。但是我无法弄清楚两件事:
- 如何从 C 库中提取该常量大小并创建一个该大小的字符串
- 将字符串正确传递给函数,以便正确填充错误消息
非常感谢任何帮助:)
【问题讨论】: