共享库JNI上的未定义引用

时间:2012-11-09 18:11:42

标签: java compiler-construction linker java-native-interface

好的,所以我正在使用JNI + C开发一些东西,java代码在.c上调用一个使用另一个编译过的C代码的方法,所以Java - > C - >下进行。

但是在运行时,如果我不使用第二个C代码,那么一切正常,但是当我使用它时:

java: symbol lookup error: /home/adriano/Área de Trabalho/229/DFT/libDFT.so: undefined symbol: newComplex

而newComplex在complex.h中

这就是我编译共享库的方式:

libDFT.so : DFT.o complex.o
gcc -shared -ansi -pedantic -Wall -O0 -g -ftest-coverage -fprofile-arcs -fPIC -I${JNI_INCLUDE} -I${JNI_INCLUDE}/linux/ -o $@ $<

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

这是错误的:

libDFT.so : DFT.o complex.o
        gcc -shared ... -o $@ $<

来自documentation

  

$&LT;
  第一个先决条件的名称。

你想:

libDFT.so : DFT.o complex.o
        gcc -shared ... -o $@ $^

所有的先决条件的名称。)