与 GMP 相关的 macOS 上的 Rust 编译错误
Rust compile error on macOS related to GMP
类似
use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;
...
fn a() -> Option<MyMPZ>;
它(连同许多其他 Rust 文件、库和其他依赖项)在 Ubuntu 甚至 Windows 上编译并且 运行s OK,但在 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 等,效果相同。
更新二:
似乎这绝对是某种缓存问题。因为当我构建依赖项时,他们从 C:\Users\<userName>\.rustup\toolchains\nightly-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib
中获取自定义构建的 gmp.lib 的 32 位版本。因此,如果我检查依赖项并单独构建它 - 在那里测试 运行。如果我构建整个项目,并使用我自己的构建依赖包作为 .lib,我在某个时候得到
expected struct `gmp::mpz::Mpz`, found another struct `gmp::mpz::Mpz`
对我来说,这似乎是 GMP 32/64 位库的混合。
好吧,这就是 cargo dependency hell:) - 在多次重新安装、清理等不成功之后,我终于能够通过手动下载、重建和重新引用 git 引用的依赖项的本地路径来重建.从那时起 - 无论我是在本地还是通过 git 或 crates.
引用,一切都很好
类似
use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;
...
fn a() -> Option<MyMPZ>;
它(连同许多其他 Rust 文件、库和其他依赖项)在 Ubuntu 甚至 Windows 上编译并且 运行s OK,但在 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 等,效果相同。
更新二:
似乎这绝对是某种缓存问题。因为当我构建依赖项时,他们从 C:\Users\<userName>\.rustup\toolchains\nightly-i686-pc-windows-msvc\lib\rustlib\i686-pc-windows-msvc\lib
中获取自定义构建的 gmp.lib 的 32 位版本。因此,如果我检查依赖项并单独构建它 - 在那里测试 运行。如果我构建整个项目,并使用我自己的构建依赖包作为 .lib,我在某个时候得到
expected struct `gmp::mpz::Mpz`, found another struct `gmp::mpz::Mpz`
对我来说,这似乎是 GMP 32/64 位库的混合。
好吧,这就是 cargo dependency hell:) - 在多次重新安装、清理等不成功之后,我终于能够通过手动下载、重建和重新引用 git 引用的依赖项的本地路径来重建.从那时起 - 无论我是在本地还是通过 git 或 crates.
引用,一切都很好