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

问题描述 投票:0回答:1

就像是

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

...

fn a() -> Option<MyMPZ>;

它(以及许多其他Rust文件,库和其他依赖项)在Ubuntu甚至Windows上编译并运行正常,但在macOS Mojave上我得到

期望struct`gmp :: mpz :: Mpz`,找到enum`std :: option :: Option`

注意:期望类型`&gmp :: mpz :: Mpz` 找到类型`&std :: option :: Option`

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

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

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

期望struct`gmp :: mpz :: mpz`,找到另一个struct`gmp :: mpz :: mpz`

这似乎是混合了GMP 32/64位库给我。

macos rust gmp
1个回答
0
投票

好吧这是货物依赖地狱:) - 经过多次不成功的重新安装,清理等我终于能够通过手动下载和重建并重新引用使用git引用的依赖项的本地路径来重建。从那时起 - 无论我是在本地引用还是通过git或crates引用,所有内容都很好。

© www.soinside.com 2019 - 2024. All rights reserved.