繁体   English   中英

无法构建项目,有错误-体系结构x86_64的未定义符号:“ _ JNI_CreateJavaVM”

[英]Can't build project, have error - Undefined symbols for architecture x86_64: “_JNI_CreateJavaVM”

您好,我尝试过使用C ++代码创建JVM实例:

#include <jni.h>
#include <iostream>

using namespace std;

int main() {

    JavaVMOption jvmopt[1];
    jvmopt[0].optionString = (char *) "-Djava.class.path=";

    JavaVMInitArgs vmArgs;
    vmArgs.version = JNI_VERSION_1_6;
    vmArgs.nOptions = 1;
    vmArgs.options = jvmopt;
    vmArgs.ignoreUnrecognized = JNI_TRUE;

    // Create the JVM
    JavaVM *javaVM;
    JNIEnv *jniEnv;
    long flag = JNI_CreateJavaVM(&javaVM, (void**)
            &jniEnv, &vmArgs);
    if (flag == JNI_ERR) {
        cout << "Error creating VM. Exiting...\n";
        return 1;
    }



    javaVM->DestroyJavaVM();

    return 0;
}

但是,当我尝试构建我的项目(我正在使用CLion)时,构建完成并出现错误:

Undefined symbols for architecture x86_64:
  "_JNI_CreateJavaVM", referenced from:
      _main in main.cpp.o
ld: symbol(s) not found for architecture x86_64

这是我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.7)
project(repl_native)

set(CMAKE_CXX_STANDARD 14)

find_package(Java REQUIRED)
find_package(JNI REQUIRED)
include(UseJava)

include_directories(${JNI_INCLUDE_DIRS})

set(SOURCE_FILES main.cpp)
add_executable(repl_native ${SOURCE_FILES})

我认为必须在CMakeList中提供共享库jvm.dylib或类似内容的链接,但是我不知道位置在哪里以及如何将此链接添加到cmake。 我也在使用macOS。

看来您缺少JVM库。

在这里看看:

http://jnicookbook.owsiak.org/recipe-no-027/

我知道这并不是您要找的东西,但是在您拒绝伸出援助之手之前,先看看吧;)

该样本是为macOS准备的。 它使用Makefile,但是您仍然可以选择一些设置-例如用于构建代码的库。

注意:

-L${JAVA_HOME}/jre/lib/server/ \
    -ljvm \
    -rpath ${JAVA_HOME}/jre/lib/server

您还可以在此处找到带有CLion的示例代码:

http://jnicookbook.owsiak.org/recipe-No-D001/

这也不完全是您想要的,但仍然可能会有所帮助。

玩JNI。

暂无
暂无

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

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