Cargo: No se encontró la caja en las pruebas de integración si `crate-type = [" cdylib "]`

Creado en 13 feb. 2019  ·  3Comentarios  ·  Fuente: rust-lang/cargo

Problema
Estoy desarrollando un código que debe funcionar con python, lo que requiere que tenga un tipo de caja de cdylib . Resulta que cuando sigue la recomendación de usar un directorio tests , el código dentro del directorio no puede encontrar la caja, fallando con un error como el siguiente:

   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

Pasos

  1. Consulte el repositorio en https://github.com/ckaran/cargo_issue_6659.
  2. Siga las instrucciones en el README.md

Soluciones posibles)

Ninguno conocido.

Notas

$ 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

Comentario más útil

Puede agregar rlib (o lib ) a la lista crate-type , y debería funcionar. Las pruebas no se pueden vincular al cdylib.

Por cierto, hay un error tipográfico en su ejemplo, tests/tester.rs debería tener extern crate cargo_issue_6659; .

Todos 3 comentarios

Puede agregar rlib (o lib ) a la lista crate-type , y debería funcionar. Las pruebas no se pueden vincular al cdylib.

Por cierto, hay un error tipográfico en su ejemplo, tests/tester.rs debería tener extern crate cargo_issue_6659; .

Ah, lo siento, dado que hay un problema de gallina y huevo entre crear un repositorio que tiene el mismo nombre que el problema para el que es, a veces me olvido de cambiar los nombres. Ahora arreglado.

En cuanto a la configuración de rlib o lib , el problema es que estoy usando pyo3 , que dice que debe configurar el tipo de biblioteca en cdylib , y no tener mi El trabajo de pruebas de integración me sorprendió. Si se sabe que las pruebas no se pueden vincular a las bibliotecas de tipo cdylib , puede valer la pena actualizar la documentación de cargo (o tal vez rustc ) para reflejar este hecho .

Sí, la documentación para los tipos de cajas definitivamente podría mejorarse en general.

No dude en dejar más comentarios aquí si tiene algún otro problema. De lo contrario, dejaré esto abierto como un problema de documentación.

¿Fue útil esta página
0 / 5 - 0 calificaciones