2

我正在尝试使用 Rust 编写的简单整数加法函数与 Java 的 Project Panama 一起使用。使用 crate 生成绑定cbindgen后,运行 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,我猜?):cstdlibnew

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

extern "C" {

uint32_t addition(uint32_t a, uint32_t b);

} // extern "C"

我需要做什么jextract才能找到这些文件?

4

1 回答 1

1

正确的命令是jextract -C -x -C c++ -I /Library/Developer/CommandLineTools/usr/include/c++/v1 -t adder -o adder.jar bindings.h

传递-x c++给 clang,包含-I.

于 2020-07-07T11:56:40.983 回答