【发布时间】:2018-05-31 07:12:26
【问题描述】:
我有这些 C 文件,我想使用来自 Rust 的 pair_add、add 和 PAIR。
adder.c
#include <stdlib.h>
#include "adder.h"
int pair_add(PAIR * ppair) {
return ppair->x + ppair->y;
}
int add(int x, int y) {
return x + y;
}
adder.h
typedef struct {
int x;
int y;
} PAIR;
int pair_add(PAIR * ppair);
int add(int, int);
我使用以下方法编译它们:
gcc -c adder.c
ar rc libadder.a adder.o # Static link
documentation 没有详细说明如何集成 C typedef 结构,the example 用于返回和接受 i32 的函数。 Other online resources were also limited.
我尝试了以下但无法添加PAIR typedef:
extern crate libc;
use libc::c_int;
#[link(name = "adder")]
extern "C" {
// Define PAIR
// int pair_add(PAIR * ppair);
fn pair_add(input: Pair) -> c_int;
// int add(int, int);
fn add(input1: c_int) -> c_int;
}
fn main() {}
【问题讨论】:
-
@Stargateur 更新了帖子并发布了一个关于该主题的新问题stackoverflow.com/questions/50619070