gpt4 book ai didi

macos - 与 GMP 相关的 macOS 上的 Rust 编译错误

转载 作者:行者123 更新时间:2023-11-29 08:32:07 25 4
gpt4 key购买 nike

有点像

use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;

...

fn a() -> Option<MyMPZ>;

它(连同许多其他 Rust 文件、库和其他依赖项)在 Ubuntu 甚至 Windows 上编译和运行正常,但在 macOS Mojave 上我明白了

expected struct `gmp::mpz::Mpz`, found enum `std::option::Option`

note: expected type `&gmp::mpz::Mpz`
                                                      found type `&std::option::Option`

我用 Brew 安装了 GMP,但我尝试使用自己构建的 GMP 6.1.2,结果相同。

更新 1:似乎 MCVE 没有多大意义,因为我在同一个根目录中有两个完全相同的项目副本,例如 root\example1 和 root\example2。一个副本构建正常,另一个给出错误消息。多次尝试 cargo clean 等,效果相同。

更新 2:似乎这绝对是某种缓存问题。因为当我构建依赖项时,它们会从 C:\Users\<userName>\.rustup\toolchains\nightly-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib 中获取自定义构建的 32 位版本的 gmp.lib。 .因此,如果我检查依赖项并单独构建它 - 测试在那里运行。如果我构建整个项目,并使用我自己的构建依赖包作为 .lib,我在某个时候得到了

expected struct `gmp::mpz::Mpz`, found another struct `gmp::mpz::Mpz`

对我来说,这似乎是 GMP 32/64 位库的混合。

最佳答案

好吧,这就是 cargo dependency hell:) - 在多次重新安装、清理等不成功之后,我终于能够通过手动下载、重建和重新引用 git 引用的依赖项的本地路径来重建。从那时起 - 无论我是在本地引用还是通过 git 或 crates 引用,一切都很好。

关于macos - 与 GMP 相关的 macOS 上的 Rust 编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54281527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com