こんにちは、私はC++コードからJVMインスタンスを作成することが試みられています(は、プロジェクトをビルドエラー持つことはできません - アーキテクチャx86_64のための未定義シンボルを:「_JNI_CreateJavaVMを」
#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;
}
しかし、私は私のプロジェクトをビルドしようとすると、
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})
:
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です:私は、ビルドがエラーで終了した)CLionを使用しています私はCMakeListで共有ライブラリのjvm.dylibなどのリンクを提示する必要があると思いますが、どこに配置されているのか分からず、cmakeにリンクする方法を追加します。また、私はmacOSを使用しています。