gpt4 book ai didi

java - 在 Rust 项目的 C 绑定(bind)上运行 jextract 时, fatal error "' stdlib.h' file not found

转载 作者:行者123 更新时间:2023-12-03 11:35:25 27 4
gpt4 key购买 nike

我想使用 Project Panama 的 jextract用于构建到 Rust 库的 Java 绑定(bind)的工具。运行以下命令时,出现错误:

jextract -C -x -C c++ -I /Library/Developer/CommandLineTools/usr/include/c++/v1 -t adder -o adder.jar bindings.h
java.lang.RuntimeException: /Library/Developer/CommandLineTools/usr/include/c++/v1/stdlib.h:93:15: fatal error: 'stdlib.h' file not found

我很困惑,因为包含路径包含 stdlib.h :

ls /Library/Developer/CommandLineTools/usr/include/c++/v1/ | grep stdlib                                        
cstdlib
stdlib.h

错误行只包含#include_next <stdlib.h> .

我的 Rust 源代码是一个简单的函数:

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

#[cfg(test)]
mod tests {
use super::*;

#[test]
fn adds() {
assert_eq!(addition(1, 2), 3);
}
}

bindings.h header 由 cbindgen 生成 crate :

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

extern "C" {

uint32_t addition(uint32_t a, uint32_t b);

} // extern "C"

我需要为 jextract 做什么?定位stdlib.h

最佳答案

这是一个缺少包含路径的情况 - 我还需要包含 MacOS SDK stdlib.h 头文件位置。错误并不清楚这一点。

正确的运行命令是:

jextract -C -x -C c++ -I /Library/Developer/CommandLineTools/usr/include/c++/v1 -I /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -t adder -o adder.jar bindings.h

关于java - 在 Rust 项目的 C 绑定(bind)上运行 jextract 时, fatal error "' stdlib.h' file not found,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62776255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com