编译 Rust 静态库并在 C++ 中使用它:undefined reference
Compiling Rust static library and using it in C++: undefined reference
我正在尝试用 Rust 编译一个 static
库,然后在我的 C++ 代码中使用它(注意这是关于从 C++ 调用 Rust,而不是相反)。我浏览了所有我能在网上找到的教程,并回复了类似的问题,我显然做错了什么,虽然我看不到什么。
我为我的问题创建了一个最小示例:
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();
}
要构建库,在我的 rust 目录中 运行 :
cargo build --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: In function main
:
hello_world_in_cpp.cpp:(.text+0x5): undefined reference to hello_world_in_rust()
我正在尝试用 Rust 编译一个 static
库,然后在我的 C++ 代码中使用它(注意这是关于从 C++ 调用 Rust,而不是相反)。我浏览了所有我能在网上找到的教程,并回复了类似的问题,我显然做错了什么,虽然我看不到什么。
我为我的问题创建了一个最小示例:
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();
}
要构建库,在我的 rust 目录中 运行 :
cargo build --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: In function
main
:hello_world_in_cpp.cpp:(.text+0x5): undefined reference to
hello_world_in_rust()