2015-03-31 52 views
2

我需要創建一個綁定到現有箱子的(靜態)C庫。 Cargo有什麼方法可以爲我創建這個C庫嗎?有沒有辦法用Cargo創建C庫?

我有一個箱子(例如html5ever),我希望Cargo爲這個箱子創建一個基於C-API的C庫。

+0

你可以看看[c-code-to-rust-functions中的回調函數](http://doc.rust-lang.org/nightly/book/ffi.html#callbacks-from-c code-to-rust-functions) – pd40 2015-03-31 23:29:53

回答

0

解決此問題的一種方法是創建一個存儲C API的特殊箱子。例如,如果您的庫被稱爲foo,那麼在主目錄中有另一個文件夾與src/tests並稱爲capi,這將爲C API存儲特殊的包裝箱foo_capi

foo 
    | 
    +--src 
    | 
    +--test 
    | 
    +--capi 
     | 
     +--include 
     | 
     +--src 
     | 
     Cargo.toml 

include文件夾包含頭文件C.

src包含遠銷到C.

艙單應該靜態鏈接和對項目FOO依賴鏽文件。例如,檢查這個在html5ever中使用的Cargo.toml

1

有什麼方法Cargo可以爲我創建這個C庫嗎?

貨物目前沒有此功能。

我有一個箱子(例如html5ever),我希望Cargo爲這個箱子創建一個基於C-API的C庫。

是否有一個原因,它是在C? C可以直接調用Rust代碼,您可以使用html5ever(因爲它存在)。

+0

現在的問題在於,html5ever上的人正在試圖做的就是讓它由Rust創建C-API,這樣他們就可以擺脫唯一任務所在的Makefile,創建C_API。基本上,移動到貨物,刪除Makefile。 – 2015-04-01 09:21:27

+0

我很驚訝Cargo不允許某種CLI逃生艙口。 – 2015-04-01 09:22:11

+0

呵呵,我不知道他們用的是什麼,我不得不問kmc。 – 2015-04-01 20:29:46

相關問題