我在通过 JNI 将 Fortran 代码与 Java 集成时遇到问题。当我将 C 对象与 Fortran 对象链接时,可能会出现此问题。
文件:HelloWorld.java
public class HelloWorld {
native void foo();
static {
System.loadLibrary("test");
}
static public void main(String argv[]) {
new HelloWorld().foo();
}
}
Run Code Online (Sandbox Code Playgroud)
文件:ctest.c
#include <jni.h>
#include <stdio.h>
extern void bar_();
JNIEXPORT void JNICALL Java_HelloWorld_foo
(JNIEnv * env, jobject jobj)
{
printf("Hello World!\n");
}
Run Code Online (Sandbox Code Playgroud)
汇编:
$ gcc -fPIC -shared -lc \
-I/usr/lib/jvm/java-7-oracle/include \
-I/usr/lib/jvm/java-7-oracle/include/linux \
-o libtest.so ctest.c
$ javac HelloWorld.java
$ java HelloWorld
Hello World!
Run Code Online (Sandbox Code Playgroud)
非常好,Hello World!工作正常。但是当我添加 …