gpt4 book ai didi

java - 使用 MinGW64 的 JAWT 应用程序无法运行

转载 作者:行者123 更新时间:2023-12-01 05:09:40 27 4
gpt4 key购买 nike

尝试运行 JAWT/JNI 应用程序。

我正在使用jdk1.6.0_31和MinGW64在 Windows 7 x64 上。编译很顺利,但仍然无法运行应用程序。在我添加 JAWT_GetAWT() 函数之前没有问题。

问题是我是 C/C++ 编程语言的新手。

Native.java

import java.awt.Component;
import javax.swing.JFrame;

public class Native{

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

public static native boolean getBoolean(Component component);

public static void main(String args[]){
JFrame frame = new JFrame("test viewport");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.pack();

getBoolean(frame);
}
}

生成Native.h

/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Native */

#ifndef _Included_Native
#define _Included_Native
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Native
* Method: getBoolean
* Signature: (Ljava/awt/Component;)Z
*/
JNIEXPORT jboolean JNICALL Java_Native_getBoolean
(JNIEnv *, jclass, jobject);

#ifdef __cplusplus
}
#endif
#endif

Native.c

#include <jni.h>
#include <jawt_md.h>
#include <jawt.h>
#include "Native.h"

JNIEXPORT jboolean JNICALL Java_Native_getBoolean(JNIEnv *env, jclass class, jobject component){
JAWT awt;
awt.version = JAWT_VERSION_1_4;

return JAWT_GetAWT(env, &awt);//can't run after I add this function
}

GCC 编译命令行来自 here

gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -Id:/devtools/java/jdk1.6.0_31/include -Id:/devtools/java/jdk1.6.0_31/include/win32 -LD:/devtools/java/jdk1.6.0_31/jre/bin -ljawt -shared Native.c -o native.dll  

应用程序给出 java.lang.UnsatisfiedLinkError:

Exception in thread "main" java.lang.UnsatisfiedLinkError: C:\Users\t.key\Desktop\Native\native.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at Native.<clinit>(Native.java:7)
Could not find the main class: Native. Program will exit.

请帮忙!

最佳答案

您可以尝试一下这里提出的解决方案:https://github.com/mikiobraun/jblas/issues/9

(他们也在使用 MinGW64,这就是为什么我认为这也可以解决您的问题。)

关于java - 使用 MinGW64 的 JAWT 应用程序无法运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12202695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com