Cargo: Crate tidak ditemukan dalam tes integrasi jika `crate-type = ["cdylib"]`

Dibuat pada 13 Feb 2019  ·  3Komentar  ·  Sumber: rust-lang/cargo

Masalah
Saya sedang mengembangkan kode yang perlu bekerja dengan python, yang mengharuskan saya untuk memiliki tipe peti cdylib . Ternyata ketika Anda mengikuti rekomendasi untuk menggunakan direktori tests , kode di dalam direktori tidak dapat menemukan peti, gagal dengan kesalahan seperti berikut:

   Compiling cargo_issue_6659 v0.1.0 (/home/cfkaran2/Desktop/cargo_issue_6659)
     Running `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
     Running `rustc --edition=2018 --crate-name cargo_issue_6659 src/lib.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=b9fa70b838dfddae -C extra-filename=-b9fa70b838dfddae --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps`
error[E0463]: can't find crate for `rustc_issue_report_cdylib`
 --> tests/tester.rs:1:1
  |
1 | extern crate rustc_issue_report_cdylib;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ can't find crate

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: Could not compile `cargo_issue_6659`.

Caused by:
  process didn't exit successfully: `rustc --edition=2018 --crate-name tester tests/tester.rs --color always --emit=dep-info,link -C debuginfo=2 --test -C metadata=0525a91fc572753f -C extra-filename=-0525a91fc572753f --out-dir /home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps -C incremental=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/incremental -L dependency=/home/cfkaran2/Desktop/cargo_issue_6659/target/debug/deps` (exit code: 1)
warning: build failed, waiting for other jobs to finish...
error: build failed

Langkah

  1. Lihat repositori di https://github.com/ckaran/cargo_issue_6659.
  2. Ikuti petunjuk di README.md

Solusi yang memungkinkan)

Tidak ada yang diketahui.

Catatan

$ cargo -V -vvv
cargo 1.32.0 (8610973aa 2019-01-02)
release: 1.32.0
commit-hash: 8610973aaf48615ba7dc9a38a9a2795ba6f36a31
commit-date: 2019-01-02

$ rustc -Vv
rustc 1.32.0 (9fda7c223 2019-01-16)
binary: rustc
commit-hash: 9fda7c2237db910e41d6a712e9a2139b352e558b
commit-date: 2019-01-16
host: x86_64-unknown-linux-gnu
release: 1.32.0
LLVM version: 8.0

$ uname -a
Linux EMANE 4.15.0-45-generic #48-Ubuntu SMP Tue Jan 29 16:28:13 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release --all
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:    18.04
Codename:   bionic
A-crate-types A-documenting-cargo-itself

Komentar yang paling membantu

Anda dapat menambahkan rlib (atau lib ) ke daftar crate-type , dan itu akan berfungsi. Tes tidak dapat ditautkan ke cdylib.

BTW, ada kesalahan ketik dalam contoh Anda, tests/tester.rs seharusnya extern crate cargo_issue_6659; .

Semua 3 komentar

Anda dapat menambahkan rlib (atau lib ) ke daftar crate-type , dan itu akan berfungsi. Tes tidak dapat ditautkan ke cdylib.

BTW, ada kesalahan ketik dalam contoh Anda, tests/tester.rs seharusnya extern crate cargo_issue_6659; .

Ah, maaf, karena ada masalah ayam & telur antara membuat repo yang memiliki nama yang sama dengan masalahnya, saya terkadang lupa mengganti nama. Sekarang diperbaiki.

Adapun pengaturan ke rlib atau lib , masalahnya adalah saya menggunakan pyo3 , yang mengatakan bahwa Anda harus mengatur jenis perpustakaan ke cdylib , dan tidak memiliki pekerjaan tes integrasi mengejutkan saya. Jika diketahui bahwa tes tidak dapat menautkan ke pustaka tipe cdylib , mungkin perlu memperbarui dokumentasi cargo (atau mungkin rustc ) untuk mencerminkan fakta ini .

Ya, dokumentasi untuk tipe peti pasti dapat ditingkatkan secara umum.

Jangan ragu untuk meninggalkan lebih banyak komentar di sini jika Anda mengalami masalah lain. Kalau tidak, saya akan membiarkan ini terbuka sebagai masalah dokumentasi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat