2014-10-06 25 views
3

我成功使用了帶Rust的.c文件(see this answer)。我如何鏈接多個.c文件?我已經嘗試#![link_args="/c_src/*.c"]沒有運氣。與Rust一起使用多個.c源文件

- rust-demo 
    - src 
    - c_src 
     - file1.c 
     - file2.c 
     - etc... 
    - main.rs 

編輯:

我想一個更好的問題是,我怎麼能簡單地丟棄C源代碼在我的鏽目錄,直接通過使用鏽病的link屬性開始使用它& extern(或任何其他方式)與上面的例子記在一起?

回答

3

指定我怎麼能簡單地丟棄C源代碼代碼我鏽目錄,並直接開始使用它通過使用鏽病的link屬性& extern(或任何其他方式)

你不能只是把C代碼變成鐵鏽源和期望它的工作。正如你對另一個問題的評論所說,語法#![link_args="foo.c"]從來沒有計劃過,你不應該依賴它。

Rust代碼可以鏈接的唯一東西(除了其他的防鏽代碼)是一個編譯的庫(靜態或動態)。您需要將C文件編譯爲一個或多個庫,然後才能從Rust代碼調用它們。

正確的方法,這樣做是在Cargo.toml[package]部分添加build的說法,你可以這樣調用,將首先建立你的C文件爲靜態庫,然後針對其鏈接你的防鏽代碼生成文件。提供貨物網站上

所有的細節:http://doc.crates.io/build-script.html

1

假設你正在使用的貨物,添加某種腳本與build = ["gcc ..."]將其納入一個正確的庫,那麼你只有一件事#[link_args]

+0

是的,我使用的貨物。用'build = [「gcc ...」]'添加某種腳本到.._你能更具體些嗎?此外,這是否記錄在任何地方? – goo 2014-10-06 05:59:44

+0

在貨物網站上:http://crates.io/native-build.html – Levans 2014-10-06 07:17:59

+1

@goo,你可以很好地瞭解如何構建非Rust依賴關係[here](http://crates.io/native-build的.html)。 – 2014-10-06 07:18:41