无法链接本机库。 SBT项目(Scala)中的Javah:找不到类文件

时间:2019-03-04 04:57:07

标签: c++ scala java-native-interface sbt javah

假设我有一个名为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

感谢您阅读我的问题。

0 个答案:

没有答案