Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对'JNI_CreateJavaVM';的未定义引用;linux 我试图熟悉JNI API,但不能得到一个C++程序的编译。_C++_Java Native Interface - Fatal编程技术网

对'JNI_CreateJavaVM';的未定义引用;linux 我试图熟悉JNI API,但不能得到一个C++程序的编译。

对'JNI_CreateJavaVM';的未定义引用;linux 我试图熟悉JNI API,但不能得到一个C++程序的编译。,c++,java-native-interface,C++,Java Native Interface,这是我用来编译的命令,下面是我试图编译的程序。我得到的错误是: /tmp/cczyqqyL.o: In function `main': /home/nc/Desktop/jni/simple/ctojava/callJava.cpp:16: undefined reference to `JNI_CreateJavaVM' 汇编: g++ -g -I/usr/lib/jvm/java-7-oracle/include/ -I/usr/lib/jvm/java-7-oracle/include

这是我用来编译的命令,下面是我试图编译的程序。我得到的错误是:

/tmp/cczyqqyL.o: In function `main':
/home/nc/Desktop/jni/simple/ctojava/callJava.cpp:16: undefined reference to `JNI_CreateJavaVM'
汇编:

g++ -g -I/usr/lib/jvm/java-7-oracle/include/ -I/usr/lib/jvm/java-7-oracle/include/linux/ -L/usr/bin/java -L/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/ -ljvm callJava.cpp
C++:


GCC查找符号的方式最近发生了相当大的变化:现在要链接的单元严格地从左到右进行处理,如果命令行中左侧的库不需要它们,则对库(
-lYourLibrary
)的引用将被默默忽略

要解决此问题,请将
-ljvm
移到使用它的编译单元之后,例如移到命令行的最末端:

g++ -g -I/usr/lib/jvm/java-7-oracle/include/ -I/usr/lib/jvm/java-7-oracle/include/linux/ \
-L/usr/bin/java -L/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/ callJava.cpp -ljvm
这将有助于:
LD_LIBRARY_PATH=/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server ./a.out
g++ -g -I/usr/lib/jvm/java-7-oracle/include/ -I/usr/lib/jvm/java-7-oracle/include/linux/ \
-L/usr/bin/java -L/usr/lib/jvm/java-7-oracle/jre/lib/amd64/server/ callJava.cpp -ljvm