有点像
use super::gmp::mpz::Mpz;
...
pub type MyMPZ = Mpz;
...
fn a() -> Option<MyMPZ>;
它(以及许多其他Rust文件、libs和其他依赖项)可以在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,我在某个时候需要结构'gmp::mpz::mpz',找到另一个结构'gmp::mpz::mpz`
这似乎是混合GMP 32/64位库给我。
最佳答案
好吧,那就是货物依赖关系hell:)-在多次不成功的重新安装、清理等之后,我终于能够通过手动下载、重新构建和重新引用git引用的依赖关系的本地路径来重新构建。从那时起-所有的建设罚款,无论我引用本地或通过git或板条箱。
关于macos - 与GMP相关的macOS上的Rust编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54281527/