macos - Rust cargo dylib 说明

标签 macos rust embed dylib rust-cargo

我有一个 Rust 项目,我想将其作为 dylib 嵌入到另一个应用程序中。我在我的 Cargo.toml 中设置了 crate_type = ["dylib"],但我不确定这是否应该是 cdylib

当我构建项目时,它按预期在 target/debug 中生成了一个 libfoo.dylib,但是查看 otool -L 它还链接到 target/debug/deps/ 中的 libfoo.dylib。如果我要在另一个应用程序中使用它,我是否必须提供两个动态库?

此外,当 crate 类型为 cdylib 时,它也会生成两个 dylib,但 deps 中的一个将在文件名末尾附加一个散列。我不确定这两种 crate 类型之间有什么区别。

我可以通过仅使用 rustc 来避免获得两个 dylib,但是我想使用 cargo。在其他应用程序中将 Rust 作为 dylib 嵌入的推荐方法是什么?

如果这很重要,我会在 macOS 10.12 上使用 Rust

最佳答案

经过更多研究,发现 cdylib 静态链接 Rust 依赖项,而 dylib 用于与其他 Rust 项目动态链接。

至于嵌入,我发现的一切都表明静态链接 Rust 库是推荐的方式。为了动态使用 Rust 库,在我的 [profile] 部分设置 rpath = true 解决了冗余 dylib 的问题。

关于macos - Rust cargo dylib 说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44169635/

相关文章:

ios - MacOS应用程序已针对App Store进行验证:与iOS应用程序兼容的配置文件存在问题

rust - 使用 kwargs 从 Python Rust 函数调用失败

c# - 用于嵌入 C#/.NET 应用程序的脚本语言?

php - 为什么我的 Mac OS X 没有 php.ini 文件?我应该如何获取它以便我可以下载和安装 Composer ?

macos - MAC OS X : Set external USB camera resolution with AVCaptureSession's sessionPreset doesn't work

c# - VS 2017 for Mac 错误 MSB3073

macros - 宏中 `use` 的正确方法

rust - 地址范围: Does not live long enough

video - YouTube嵌入具有自动播放功能的视频,并且仅循环触发两次

java - 将可执行 Java(或 exe)文件嵌入到 HTML(或 php)中