我可能沒有正確描述我的問題標題,請在需要時進行編輯。在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