Базель: Как создать приложение на C ++, использующее JNI? - PullRequest
0 голосов
/ 31 мая 2019

В этом ответе @hlopko показывает, как создать приложение Java, которое вызывает собственный код. Но как мне создать собственное приложение, которое вызывает код Java?

Моя попытка, описанная ниже, завершается неудачно с:

Error occurred during initialization of VM
Unable to load native library: 

Он код. BUILD.bazel

cc_binary(
    name = "main",
    srcs = [
        "main.cc",
        "@local_jdk//:jni_header",
        "@local_jdk//:jni_md_header-linux",
        "@bazel_tools//tools/jdk:current_java_runtime",
    ],
    includes = [ "external/local_jdk/include", 
    "external/local_jdk/include/linux"],
)

main.cc:

#include <jni.h>

int main() {
  JNIEnv *env;
  JavaVM *jvm;
  JavaVMInitArgs vm_args;
  JavaVMOption options[0];
  jint res;

  vm_args.version = JNI_VERSION_1_4;
  vm_args.options = options;
  vm_args.nOptions = 0;
  vm_args.ignoreUnrecognized = JNI_FALSE;

  /* Create the Java VM */
  res = JNI_CreateJavaVM(&jvm,(void**)&env,&vm_args);
}
...