相关疑难解决方法(0)

如何在Rust中创建静态库以与Windows中的C代码链接?

我有2个文件:

func.rs

#[no_mangle]
pub extern fn double_input(input: i32) -> i32 { input * 2 }
Run Code Online (Sandbox Code Playgroud)

main.c中

#include <stdint.h>
#include <stdio.h>

extern int32_t double_input(int32_t input);

int main() {
   int input = 4;
   int output = double_input(input);
   printf("%d * 2 = %d\n", input, output);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我想在Rust中创建静态库并将库链接到main.c. 我的主动工具链是stable-i686-pc-windows-gnu.我在cmd中这样做:

rustc --crate-type=staticlib func.rs 
Run Code Online (Sandbox Code Playgroud)

但是文件func.lib已创建,所以我这样做:

gcc -o myprog main.c func.lib -lgcc_eh -lshell32 -luserenv -lws2_32 -ladvapi32
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

undefined reference to __ms_vsnprintf'
Run Code Online (Sandbox Code Playgroud)

如果我做:

rustc --crate-type=staticlib --target=i686-unknown-linux-gnu lib.rs
Run Code Online (Sandbox Code Playgroud)

然后创建libfunc.a,但是当我这样做时:

gcc -o …
Run Code Online (Sandbox Code Playgroud)

c windows gcc rust

9
推荐指数
1
解决办法
2393
查看次数

标签 统计

c ×1

gcc ×1

rust ×1

windows ×1