2016-03-24 58 views
9

我嘗試使用如何鏈接不在標準位置的框架?

#[link(name = "MultitouchSupport", kind = "framework")] 

/System/Library/PrivateFrameworks對私人框架,鏈接,但鏈接器告訴我,MultitouchSupport框架沒有被發現。我也試過

#[link(name = "/System/Library/PrivateFrameworks/MultitouchSupport", kind = "framework")] 

#[link(name = "/System/Library/PrivateFrameworks/MultitouchSupport.framework", kind = "framework")] 

與文件擴展名,但既不工作。

甚至有可能鏈接到不在/System/Library/Frameworks的標準位置的框架嗎?

+1

我不熟悉'osx'框架,但你嘗試添加'調用println(「貨物:rustc鏈接搜索= native = {}「,some_dir);'在你的'build.rs'中? – WiSaGaN

+0

感謝您的回覆。我也認爲構建腳本可能是解決問題的合適位置,但不幸的是,鏈接器似乎忽略了構建rs中的println語句。我檢查了build.rs實際上是執行的,輸出是:「cargo:rustc-link-search = native =/System/Library/PrivateFrameworks」。我也嘗試了一個帶有尾部「/」的版本 –

回答

1

我發現WiSaGaN的建議與解決方案非常接近:如果您在build.rs中使用search = framework,則可以使用它。 的解決方案是使用下面的build.rs:

fn main() 
{ 
    println!("cargo:rustc-link-search=framework={}", "/System/Library/PrivateFrameworks"); 
} 

謝謝WiSaGaN!

使用此build.rs可以照常鏈接:

#[link(name = "MultitouchSupport", kind = "framework")]