是否可以创建一个使用rustc编译的静态库并将其链接到使用MSVC编译的可执行文件? 最佳答案 如果只想使用rustc生成静态库,可以通过在crate的lib.rs文件中指定一些属性,并将导出的函数标记为:
#![crate_type = "static_lib"]
#![crate_name = "mylib"]
use libc::c_int;
#[no_mangle]
pub extern fn my_exported_func(num: c_int) -> c_int {
num + 1
}
然后只需调用rustc lib.rs.这适用于rustc支持的所有平台.
在C/C++标头中,添加:
#pragma once
// only use extern block if the header is put inside a C++ CU
extern "C" {
int my_exported_func(int num);
}
并根据需要链接输出.lib或.a.
对于Cargo,您可以在Cargo.toml中指定包装箱类型和名称.
资料来源:
> http://rustbyexample.com/attribute/crate.html
> https://doc.rust-lang.org/book/ffi.html