JNI Windows Netbeans不满意的链接错误



我遵循本指南"如何使用NetBeans创建JNI":

使用这个SO问题的代码:

我已经生成了一个.dll和包文件,但不确定如何处理它们;如何告诉java在哪里可以使用NetBeans找到它们?

我的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代码中,就在本机方法之前:

static {
    System.load("YourNetbeansFolder\YourProject\dist\YourNative.dll");
}

static{}将在首次访问AddingControllersToGUI时运行此方法(因此在调用intMethod()之前)。

显然,该代码中的文件夹需要修改以指向DLL的位置。

当你真正构建和分发你的程序时,你需要弄清楚如何加载这个DLL。例如,在Minecraft中,使用的DLL/SO(SO是基于UNIX的操作系统的"DLL")文件被提取到%APPDATA%/.Minecraft/(或类UNIX中的~/.Minecraft)中,并从那里加载。

就目前而言,这应该足够了。。。!

相关内容

  • 没有找到相关文章

最新更新