假设我有一个名为vectorMul2的应用程序,该应用程序在Scala中进行了编程,并使用SBT进行了编译。此应用程序具有Wrapper类,该类具有必须通过使用JNI从C ++调用的本机方法,JNI是程序包myPackage.operator
的一部分。问题是javah
在项目根目录(~/IdeaProjects/vectorMul2/
)上找不到执行命令的包装器类:
javah -jni -d . -cp target/ myPackage.operator.JNIWrapper
我得到的错误如下:
Error: Could not find class file for 'myPackage.operator.JNIWrapper'.
尽管与此类问题相关的线程很多,但所有解决方案均基于Java项目,与SBT项目略有不同。
我的问题是:如何通过JNI生成将C ++库与Scala应用程序链接所需的头文件(*.h
)?
该应用是以下(~/IdeaProjects/vectorMul2/src/main/scala/vectorMul2.scala
):
import myPackage.operator._
object Test {
def main(args: Array[String]): Unit = {
val a = Array(1.1f, 2.2f, 3.3f, 4.4f, 5.5f)
val b = Array(0.1f, 0.2f, 0.3f, 0.4f, 0.5f)
val wrapper = new JNIWrapper("arith")
val c: Array[Float] = wrapper.mul(a, b)
println(a.mkString(", "))
println(b.mkString(", "))
println(c.mkString(", "))
}
}
程序包代码为({{1)}:
~/IdeaProjects/vectorMul2/src/main/scala/myPackage/myPackage.scala
感谢您阅读我的问题。