小编Tie*_*rce的帖子

使用JNI从Java调用fortran dll

我在fortran中有一个具有简单void RESET()功能的Fifp.dll,并尝试从我的Java代码中调用它。我做了一个简单的java测试类:

public class TestJni {

static {
    System.loadLibrary("Fifp");
}

public native void RESET();
}
Run Code Online (Sandbox Code Playgroud)

我从中制作了一个.h文件,并对其进行了编译。我还制作了一个桥文件myBridge.c:

#include <stdio.h>
#include "TestJni.h"

extern void RESET();

JNIEXPORT void JNICALL Java_TestJni_RESET(JNIEnv *env, jobject obj) {
    printf("Before DLL call\n");
    RESET();
    printf("After DLL call\n");
}
Run Code Online (Sandbox Code Playgroud)

现在,我无法编译它。这是我在Visual Studio x64命令提示符下尝试的命令:

> cl -I"C:\path\to\jdk\include\win32" -I"C:\path\to\jdk\include" myBridge.c
Run Code Online (Sandbox Code Playgroud)

并且还有一个-FeFifp.dll选项,它给了我相同的错误: LNK2019:无法解析的外部符号RESET(和main)

那么我在做什么错呢?
是否可以指定要包含的外部dll?
我是否以正确的方式执行new TestJni().RESET()呼叫?

任何帮助表示赞赏...

java windows java-native-interface fortran

1
推荐指数
1
解决办法
131
查看次数

标签 统计

fortran ×1

java ×1

java-native-interface ×1

windows ×1