Не получается сделать вызов сишной функции из Rust. Нужно скомпилировать .сpp и потом вызывать его из Rust.
Из тех инструкций, что удалось найти, следует, что нужно сначала собрать объектный файл при помощи, например, gcc, а потом собрать его в .a файл через ar
делаю так:
gcc -c foo.сpp
ar rsc -o libfoo.a foo.o
потом libfoo.a помещаю в директорию rust'a к остальным .a
foo.cpp:
extern "C"
{
#include <cstdio>
extern void beep();
void beep()
{
printf("It works!\n");
}
}
rust:
#[link(name = "foo")]
extern {
fn beep();
}
fn main() {
unsafe { beep(); }
}
Делаю cargo build, получаю такую вот ошибку:
ld: skipping incompatible C:/Program Files (x86)/Rust/bin/rustlib/x86_64-pc-windows-gnu/bin/../lib/gcc/x86_64-w64-mingw32/4.9.1/../../../libfoo.a when searching for -lfoo
(тут ещё строчек 10 +- таких же)
ld: cannot find -lfoo
Подскажите пожалуйста, в чём может быть проблема?