Я пытаюсь скомпилировать библиотеку static
в Rust, а затем использовать ее в своем коде C ++ (обратите внимание, что речь идет о вызове Rust из C ++, а не наоборот). Я просмотрел все учебники, которые смог найти в Интернете, и ответил на похожие вопросы, и, очевидно, я делаю что-то не так, хотя не могу понять, что.
Я создал минимальный пример для своей задачи:
1. Cargo.toml:
[package]
name = "hello_world"
version = "0.1.0"
[lib]
name = "hello_in_rust_lib"
path = "src/lib.rs"
crate-type = ["staticlib"]
[dependencies]
2. lib.rs:
#[no_mangle]
pub unsafe extern "C" fn hello_world_in_rust() {
println!("Hello World, Rust here!");
}
3. hello_world_in_cpp.cpp:
extern void hello_world_in_rust();
int main() {
hello_world_in_rust();
}
Чтобы собрать библиотеку, в моем каталоге ржавчины я запустил:
сборка груза --lib
(все прошло нормально)
Я продолжил работать в папке C ++:
clang ++ hello_world_in_cpp.cpp -o hello.out -L ../hello_world/target/release/ -lhello_in_rust_lib
Что привело к следующей ошибке:
/ tmp / hello_world_in_cpp-cf3577.o: в функции main
:
hello_world_in_cpp.cpp :(. Text + 0x5): неопределенная ссылка на hello_world_in_rust()