gpt4 book ai didi

java - 无法构建项目,出现错误 - 体系结构 x86_64 的 undefined symbol : "_JNI_CreateJavaVM"

转载 作者:行者123 更新时间:2023-11-28 05:09:15 43 4
gpt4 key购买 nike

您好,我曾尝试从 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 库。

看这里:

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNo027

我知道这不是你要找的,但在你拒绝帮助之前,先看看那里;)

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

注意:

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

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

https://github.com/mkowsiak/jnicookbook/tree/master/recipes/recipeNoD001

这也不是您要找的东西,但也许它会有所帮助。

享受 JNI 的乐趣。

关于java - 无法构建项目,出现错误 - 体系结构 x86_64 的 undefined symbol : "_JNI_CreateJavaVM",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43854458/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com