好的,所以我正在使用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 $@ $<
感谢您的帮助
答案 0 :(得分:2)
这是错误的:
libDFT.so : DFT.o complex.o
gcc -shared ... -o $@ $<
$&LT;
第一个先决条件的名称。
你想:
libDFT.so : DFT.o complex.o
gcc -shared ... -o $@ $^
(所有的先决条件的名称。)