Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JNI:库加载设计和Scala头文件(.h)最佳实践_Java_Scala_Gcc_Java Native Interface - Fatal编程技术网

Java JNI:库加载设计和Scala头文件(.h)最佳实践

Java JNI:库加载设计和Scala头文件(.h)最佳实践,java,scala,gcc,java-native-interface,Java,Scala,Gcc,Java Native Interface,下一步的最佳方案是什么: 我有一个scala库,通过JNI函数调用在BSD(MacOS X,FreeBSD)/Linux/Windows上工作,在调用一些@native函数之前,我需要加载JNI库,即.so、.dylib、.dll 项目结构: /通用(Scala代码) /windows(C代码和Scala类绑定) /macos(C代码和Scala类绑定) /linux(C代码和Scala类绑定) 当前最简单的解决方案(适用于MacOS X,如果安装了gcc): (进程(s“cd c_native

下一步的最佳方案是什么:

我有一个scala库,通过JNI函数调用在BSD(MacOS X,FreeBSD)/Linux/Windows上工作,在调用一些@native函数之前,我需要加载JNI库,即.so、.dylib、.dll

项目结构:

/通用(Scala代码)

/windows(C代码和Scala类绑定)

/macos(C代码和Scala类绑定)

/linux(C代码和Scala类绑定)

当前最简单的解决方案(适用于MacOS X,如果安装了gcc):

(进程(s“cd c_native_path_src”)###进程(s“gcc-dynamiclib-O3”+
“-I/System/Library/Frameworks/JavaVM.framework/Headers”+
“-I/usr/include”+
“-I$JAVA_主页/包含”+
s“-I$$JAVA_HOME/include/darwin”+
s“$some_path/src/lib_native_util.c”+
s“-o$some_path/$libPath/$libName$.dylib”))
最好的解决方案是什么?我试过一种CMake,但不幸的是,没有任何效果


顺便说一句,还有一个问题:如果我已经为Scala/Java类文件生成了一个头文件,它会在其他平台上工作吗?例如,如果我已经为我的Scala类生成了一个头文件(它在BSD/MacOS上),那么在编译@native functions的C源代码时,它是否可以在Windows/Linux上运行?

我建议您采取一些措施来帮助您。请在您的平台上工作,支持JNI、java、斯卡拉、C++…@ JonGoodwin,请您解释IDE能帮助我的方法吗?我看了Netty(因为它也使用平台库加载),我的目标是开发一个类似的。。。Netty不调用GCC,它提供了适当的binding@cchantep嗯,但是编译本地源代码呢?如果我没记错的话,Netty已经有了合适的图书馆了?我的库如何工作:我有一个带有本机函数的Scala类,在调用这些函数之前,必须加载库。我正在做的是:编译C代码(其中JNI bingind)以创建所需的共享库。最后,我可以使用本机函数,因为当我加载库时,lib文件(.so,dylib,dll)被映射到进程地址空间。本机代码应该以适当的二进制格式(.so,.dylib,.dll)发送,而不是作为源