我正在遵循本指南“How to Create a JNI with NetBeans”:
使用此 SO question 中的代码:
我已经生成了一个 .dll
和包文件,但不确定我要用它们做什么;我如何使用 NetBeans 告诉 java 在哪里找到它们?
我的java代码:
package addingcontrollerstogui;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class AddingControllersToGUI extends Application {
public native int intMethod(int i);
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
System.loadLibrary("Main");
System.out.println(new AddingControllersToGUI().intMethod(2));
}
我的 C 代码:
#include "AddingControllersToGUI.h"
jint JNICALL Java_addingcontrollerstogui_AddingControllersToGUI_intMethod
(JNIEnv * env, jobject object, jint param1) {
return param1 * param1;
}
最佳答案
您需要将 DLL 加载到程序中。编辑以下内容并将其插入到您的 Java 代码中,就在 native 方法之前:
static {
System.load("YourNetbeansFolder\\YourProject\\dist\\YourNative.dll");
}
static{} 将在首次访问 AddingControllersToGUI 时运行此方法(甚至在调用 intMethod() 之前)。
显然,需要修改该代码中的文件夹以指向您的 DLL 的位置。
当您实际构建和分发您的程序时,您需要弄清楚您希望如何加载此 DLL。例如,在 Minecraft 中,使用的 DLL/SO(SO 是基于 UNIX 的操作系统的“DLL”)文件被提取到 %APPDATA%/.minecraft/(或类 UNIX 中的 ~/.minecraft)并从那里加载.
现在,这应该足够了......!
关于java - JNI Windows Netbeans 不满意的链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38699474/