"levent"
version = "0.1.0"
edition = "2018"
[lib]
name = "liblevent"
crate-type = ["staticlib"]
path = "src/lib.rs"
required-features = ["build-lib"]
[[bin]]
name = "daemon"
path = "src/main.rs"
required-features = ["build-bin"]
Внутри lib.rs:
pub Event {
...
}
Внутри main.rs:
use liblevent::Event;
В итоге при попытке собрать получаю:
use liblevent::Event;
| ^^^^^^^^^ use of undeclared crate or module `liblevent`
Что я делаю не так?
Крейт называется levent
Пробовал и use levent::Event и use levent::liblevent::Event - все равно ругается что найти не может
проблема в crate-type = ["staticlib"] добавь туда "rlib" или дропни эту строку вообще, если статическая библиотека в виде бинарника тебе не нужна
Спасибо. Вообще перетащил нужные структуры в event.rs и импорчу как mod event; use event::{Level, Event} и в main.rs и в lib.rs
плз не надо давать неправильные советы, крейт библиотеки называется liblevent, как и говорит name = "liblevent" в секции [lib]
лучше не надо так делать, как правило с этим потом начинаются проблемы (самая маленькая — не все символы везде используются, появляются варнинги про unused)
^ всё так "staticlib"— это системная (то есть фактически с сишной линковкой) либа, не растовая, так что добавление "lib" или "rlib" решает вопрос
на всякий случай: по дефолту, в расте задействована статическая линковка
про линковку подробнее можно почитать тут: https://doc.rust-lang.org/reference/linkage.html#linkage
Обсуждают сегодня