У меня есть эти C-файлы, и я хочу использовать pair_add
, add
и PAIR
из Rust.
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
Документация не описывает, как интегрировать структуры typedef Cи пример предназначен для функций, которые возвращают и принимают i32
. Другие онлайн-ресурсы также были ограничены .
Я попытался выполнить следующее, но не смог добавить 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() {}