0

好的,所以我正在使用 JNI + C 开发一些东西,并且 java 代码调用 .c 上的一个方法,该方法使用另一个编译的 C 代码,所以 Java -> C -> 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 $@ $<

谢谢你的帮助

4

1 回答 1

2

这是错误的:

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

文档

$<第一个先决条件
的名称。

你要:

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

所有先决条件的名称。)

于 2012-11-11T06:40:46.680 回答