简体   繁体   English

使用JVM的jni.h错误(Java到C ++)

[英]jni.h Errors using JVM (Java to C++)

I am trying to call classes in Java from C++ using jni.h. 我正在尝试使用jni.h从C ++调用Java中的类。 After some research, I used the following code: 经过研究,我使用了以下代码:

JavaVM *jvm;
JNIEnv *env;

JavaVMInitArgs vm_args;
JavaVMOption* options = new JavaVMOption[1];

options[0].optionString = "-Djava.class.path=/usr/lib/java";
vm_args.version = JNI_VERSION_1_6;
vm_args.nOptions = 1;
vm_args.options = options;
vm_args.ignoreUnrecognized = false;

JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args);
delete options;

jclass cls = env->FindClass("Test.java");
jmethodID mid = env->GetStaticMethodID(cls, "test", "(I)V");
env->CallStaticVoidMethod(cls, mid, 100);

jvm->DestroyJavaVM();

However, I am getting 2 errors and they are as follows: 但是,我得到2错误,它们如下所示:

  1. "_JNI_CreateJavaVM", referenced from: _main in main.o" “ _JNI_CreateJavaVM”,引用自:main.o中的_main“

  2. ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) ld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

Does anyone have any input on how to resolve these issues? 是否有人对如何解决这些问题有任何意见? Thank you very much. 非常感谢你。

Java version: 1.7.0_71-b14 Java (TM) SE Runtime Environment: (build 1.7.0_71-b14) Java HotSpot(TM) 64-bit Server VM (build 24.71-b01, mixed mode) Java版本:1.7.0_71-b14 Java(TM)SE运行时环境:(内部版本1.7.0_71-b14)Java HotSpot(TM)64位服务器VM(内部版本24.71-b01,混合模式)

If you have the appropriate shared object libraries ( .so on Linux, .dll on Windows) check that you are using the same architecture between your compiler configuration and your set of shared libraries. 如果您具有适当的共享库(在Linux上是.so ,在Windows上是.dll ),请检查您在编译器配置和共享库集之间是否使用相同的体系结构。

If you aren't referencing said shared object libraries at the linking phase, you will need to do so. 如果在链接阶段没有引用所述共享库,则需要这样做。

I managed to figure out what I had to do. 我设法弄清楚我该怎么做。 I am working on my MacBook Pro and using XCode. 我正在使用MacBook Pro并使用XCode。 I did the following: 我做了以下工作:

  1. On the left-hand panel, I selected the project I am working on. 在左侧面板上,我选择了我正在处理的项目。
  2. I clicked 'Build Phases' in the center of the screen. 我单击了屏幕中央的“构建阶段”。
  3. I opened the 'Link Binary with Libraries' tab. 我打开了“使用库链接二进制文件”选项卡。
  4. I hit the '+' sign and added the 'JavaVM.framework' file. 我点击了“ +”号,并添加了“ JavaVM.framework”文件。

That worked for me. 那对我有用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM