具有多个C文件的OSX上的JNI的UnsatisfiedLinkError

时间:2013-08-01 23:00:20

标签: java c macos gcc java-native-interface

我已经能够使用一个C文件使JNI样本在OSX上运行,例如在this tutorial中。但是当我尝试创建一个链接在其他C文件中的makefile时,我得到了可怕的“UnsatisfiedLinkError”。

github中的

Here's my makefile

这是输入“make java”的结果:

  

gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG vm.c -o vm.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG struct.c -o struct.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG serial.c -o serial.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG compile.c -o compile.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG util.c。-o util.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG sys.c -o sys.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG variable.c -o variable.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG interpret.c.o interpre.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG hal_stub.c -o hal_stub.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG node.c -o node.o
  gcc -c -Wall -Os -std = gnu99 -I -fnested-functions -fms-extensions -DDEBUG file.c -o file.o
  javac javagree.java
  javah -jni javagree
  cc -c -fPIC -I / System / Library / Frameworks / JavaVM.framework / Headers javagree.c -o libjavagree.o
  libtool -dynamic -lSystem vm.o struct.o serial.o compile.o util.o sys.o variable.o interpret.o
hal_stub.o node.o file.o libjavagree.o -o libjavagree.dylib -macosx_version_min 10.8
  
  $ java javagree
  线程“main”中的异常java.lang.UnsatisfiedLinkError:javagree.filagree(Ljava / lang / Object; [Ljava / lang / Object;)J
      在javagree.filagree(原生方法)
      在javagree.main(javagree.java:46)

问题是:当我链接更多文件时为什么不能找到该功能?我没有正确链接吗?

0 个答案:

没有答案