Cargo: لم يتم العثور على الصندوق في اختبارات التكامل إذا كان `crate-type = [" cdylib "]`

تم إنشاؤها على ١٣ فبراير ٢٠١٩  ·  3تعليقات  ·  مصدر: rust-lang/cargo

مشكلة
أقوم بتطوير رمز يحتاج إلى العمل مع Python ، الأمر الذي يتطلب مني الحصول على صندوق من النوع cdylib . اتضح أنه عند اتباعك للتوصية باستخدام دليل tests ، فإن الكود الموجود داخل الدليل لا يمكنه العثور على الصندوق ، مما يؤدي إلى الفشل مع حدوث خطأ مثل التالي:

   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

خطوات

  1. تحقق من المستودع على https://github.com/ckaran/cargo_issue_6659.
  2. اتبع التعليمات الموجودة في README.md

الحلول الممكنة)

لا شيء معروف.

ملحوظات

$ 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

التعليق الأكثر فائدة

يمكنك إضافة rlib (أو lib ) إلى قائمة crate-type ، ويجب أن تعمل. لا يمكن ربط الاختبارات بـ cdylib.

راجع للشغل ، هناك خطأ إملائي في المثال الخاص بك ، يجب أن يحتوي extern crate cargo_issue_6659; tests/tester.rs على extern crate cargo_issue_6659; .

ال 3 كومينتر

يمكنك إضافة rlib (أو lib ) إلى قائمة crate-type ، ويجب أن تعمل. لا يمكن ربط الاختبارات بـ cdylib.

راجع للشغل ، هناك خطأ إملائي في المثال الخاص بك ، يجب أن يحتوي extern crate cargo_issue_6659; tests/tester.rs على extern crate cargo_issue_6659; .

آه ، آسف ، نظرًا لوجود مشكلة الدجاج والبيض بين إنشاء الريبو الذي يحمل نفس اسم المشكلة التي تتعلق بها ، فأنا أحيانًا أنسى تغيير الأسماء. تم إصلاحه الآن.

بالنسبة للإعداد إلى rlib أو lib ، فإن المشكلة هي أنني أستخدم pyo3 ، والتي تنص على أنه يجب عليك تعيين نوع المكتبة إلى cdylib ، وعدم وجود كان عمل اختبارات التكامل مفاجأة بالنسبة لي. إذا كان من المعروف أن الاختبارات لا يمكنها الارتباط بمكتبات النوع cdylib ، فقد يكون من المفيد تحديث وثائق cargo (أو ربما rustc 's) لتعكس هذه الحقيقة .

نعم ، يمكن بالتأكيد تحسين وثائق أنواع الصناديق بشكل عام.

لا تتردد في ترك المزيد من التعليقات هنا إذا واجهت أي مشاكل أخرى. وإلا سأترك هذا مفتوحًا باعتباره مشكلة في التوثيق.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات