我可能没有正确描述我的问题标题,请在需要时进行编辑。在Rust中为C函数指针创建接口
我想箱子防锈接口LXC library,这是写在C.
我已经成功地被称为像lxc_get_version
或lxc_container_new
简单的功能,但我不能访问在struct lxc_container
块描述的功能。
这里是我的代码的一部分:
#[link(name = "lxc")]
extern {
// LXC part
fn lxc_get_version() -> *const c_char;
fn lxc_container_new(name: *const c_char, configpath: *const c_char) -> LxcContainer;
// LXC container parts
fn is_defined(container: &LxcContainer) -> bool;
}
这里是一个错误:
note: test.o: In function `LxcContainer::is_defined::heb2f16a250ac7940Vba':
test.0.rs:(.text._ZN12LxcContainer10is_defined20heb2f16a250ac7940VbaE+0x3e): undefined reference to `is_defined'
编辑:我成功是C结构的内部函数被调用的函数指针。我试图谷歌类似“锈C函数指针”,但没有运气。
谢谢你的回答,我现在可以访问函数指针。我写了一个C表示结构和一个Rust表示的包装器。不幸的是,我无法调用'is_defined',因为我无法将LxcContainer结构作为* LxcContainer函数传递。发生解引用错误。你能否在你的答案中加入一些函数指针调用的例子?谢谢。 – bbrodriges 2014-09-30 11:42:18
@bbrodriges,对于最近的答复感到抱歉,但我已经用一个如何调用存储在结构字段中的函数的示例更新了我的答案。 – 2014-10-02 13:57:10