【问题标题】:How to tell rustc (through cargo) where to find my dll import library如何告诉 rustc(通过货物)在哪里可以找到我的 dll 导入库
【发布时间】:2015-10-24 12:23:08
【问题描述】:

我正在生成一个带有 mingw 的 dll,供 rust 使用。我知道我可以将我的libxxx.a 文件放在"Rust\bin\rustlib\x86_64-pc-windows-gnu\lib" 目录中,这就是我现在正在做的事情。但我宁愿将它保存在我的项目目录中。如何让 Cargo 告诉 rustc 在哪里可以找到它?

【问题讨论】:

    标签: windows rust rust-cargo


    【解决方案1】:

    首先,您可以使用cargo rustc-L dir 参数直接传递给rustc:

    cargo rustc -- -L lib
    

    如果您的库位于 lib 子目录中。

    另一种可能更方便的方法是使用build script 自动将库目录传递给 rustc。然后它将与其他货物命令一起使用,例如runtest 等。如果将以下代码存储到build.rs

    fn main() {
        println!("cargo:rustc-link-lib=native=foo");
        println!("cargo:rustc-link-search=native=lib");
    }
    

    (假设您的库名为libfoo.a

    然后将 build 键添加到 Cargo.toml 中的 [package] 部分:

    [package]
    ...
    build = "build.rs"
    

    那么它应该会在每次构建命令时自动找到您的库。

    请注意,构建脚本也是真正构建您的库的好地方。 Cargo 文档包含相关示例和链接。

    【讨论】:

    • 第一部作品。但是构建脚本给出了一个错误,说“未知库类型native,应为dylib、框架或静态之一”。我通过从两行中删除 =native 来让它工作。
    • @BenjaminLindley,它看起来像是货物的某种版本不匹配。我从官方货物文件中获取了这些示例。
    • 玩弄它一些,这很奇怪。我试着把“dylib”和“static”放在字符串的那部分(你放“native”的地方)什么都没有,它们都工作得很好。虽然使用“框架”,但它抱怨不在 OSX 上,正如预期的那样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多