我是靠谱客的博主 老实枕头,最近开发中收集的这篇文章主要介绍java调用win32_从Java调用Win32 API方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我不得不这样做一会儿前。你需要一个C编译器和Windows头文件。我使用了mingw,因为它是免费的,我只编译一个小文件。

首先你要上你的课。这里有一个例子:

package org.whatever.thingy;

public class MyClass {

// Here is a JNI method, identified by 'native'

public static native callWin32Thingy(int x, int y, boolean z);

/* At this point, normal class stuff, other methods, variables, whatever */

}

你然后用自带的JDK中的命令,它会自动把你的类,并生成h和.c文件之一。该命令是“javah”。方法签名将如下所示:

JNIEXPORT void JNICALL Java_com_whatever_1thingy_MyClass_callWin32Thingy

(JNIEnv *, jclass, jint, jint, jboolean);

在.c文件中,可以包含任何需要的窗口标头,并充实该方法。

JNIEXPORT void JNICALL Java_com_whatever_1thingy_MyClass_callWin32Thingy

(JNIEnv *a, jclass b, jint c, jint d, jboolean e) {

// Prep steps....

Win32MethodCallWeCareAbout(x, y, z, hWhatever);

// Cleanup stuff...

}

这是非常重要不重命名的方法,这就是它被如何与您的特定类关联。

一旦你得到了,你将这些文件编译成一个DLL。这里是我用于mingw的命令,你必须调整类/路径/等。

c:/MinGW/bin/gcc -c -Ic:/MinGW/include -I"c:/Program Files/Java/jdk1.5.0_12/include"

-I"c:/Program Files/Java/jdk1.5.0_12/include/win32" -D__int64="long long"

com_whatever_thingy_MyClass_JNIHelper.c

c:/MinGW/bin/gcc -shared -o JNIHelper.dll

com_whatever_thingy_MyClass_JNIHelper_JNIHelper.o

-Wl,--add-stdcall-alias,--kill-at,--output-def,def_file

这将产生一些文件,包括JNIHelper.dll,这就是我命名我的DL​​L。

在这一点上,你基本上完成了。您正常使用Java类,并在调用静态方法时运行Win32代码。你所要做的就是导入库。某处在你的代码(我把它放在一个静态块在我的课),你需要这条线:

System.loadLibrary("JNIHelper");

这将导致Java来加载一个名为“JNIHelper.dll”库,并将其链接到代码。它必须位于Java知道的图书馆路径的某个地方。

就是这样。这是一堆样板,但如果你正在做一些简单的包装,很容易。如果你不得不处理Java类型或分配内存,情况会变得更糟(注意:我没有,所以我没有经验)。

有一个完整的教程here(第一,我发现今天看起来体面的,你可以在网络上找到他人。在Wikipedia文章JNI有更多的信息了。

希望这有助于。

最后

以上就是老实枕头为你收集整理的java调用win32_从Java调用Win32 API方法的全部内容,希望文章能够帮你解决java调用win32_从Java调用Win32 API方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部