"cstdarg file not found" при запуске jextract на привязке C для проекта Rust

Я пытаюсь получить простую функцию сложения целых чисел, написанную на Rust, работающую с Java Project Panama. Создав привязки с помощьюcbindgen crate, при запуске jextract появляется следующая ошибка:

jextract -t org.adder -L . -l adder-java --record-library-path -I /Library/Developer/CommandLineTools/usr/include/c++/v1/cstdarg bindings.h -o adder-java.jar
java.lang.RuntimeException: /Users/ash/Code/adder/bindings.h:1:10: fatal error: 'cstdarg' file not found

Я просмотрел приведенные примеры, но не могу понять, в чем я ошибаюсь.

Вот мой файл библиотеки:

#[no_mangle]
pub extern "C" fn addition(a: u32, b: u32) -> u32 {
    a + b
}

И сгенерированные привязки (также потребуются исходники для cstdint, cstdlib а также new Я предполагаю?):

#include <cstdarg>
#include <cstdint>
#include <cstdlib>
#include <new>

extern "C" {

uint32_t addition(uint32_t a, uint32_t b);

} // extern "C"

Что мне нужно сделать, чтобы получить jextract найти эти файлы?

1 ответ

Правильная команда jextract -C -x -C c++ -I /Library/Developer/CommandLineTools/usr/include/c++/v1 -t adder -o adder.jar bindings.h.

Проходят -x c++ лязгать, включить путь, указанный -I.

Другие вопросы по тегам