300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 使用Java 10调用C/C++动态链接库dll之HelloWorld

使用Java 10调用C/C++动态链接库dll之HelloWorld

时间:2021-12-05 03:47:38

相关推荐

使用Java 10调用C/C++动态链接库dll之HelloWorld

注:博主所用环境:eclipse , java10,visual studio

一、编写Java程序

首先打开eclipse,新建java工程

在建好的工程中新建一个源文件:右键点击src——》new——》class

在对话框中输入包名、类名,并勾选自动生成main函数。

编写java程序,最终如下:

package helloworld;public class HelloWorld {public native void sayHello();public static void main(String[] args) {// TODO Auto-generated method stubSystem.loadLibrary("HelloWorld"); HelloWorld helloworld = new HelloWorld();helloworld.sayHello();}}

其中关键字native表示该函数将用本地方法(即我们用的C/C++所写的函数方法)、loadLibrary中的参数“HelloWorld”是我们待会生成的动态链接库文件HelloWorld.dll。

在Windows下打开cmd命令行,进入该程序所在目录,输入以下命令生成对应.class和.h文件。

javac -h . HelloWorld.java

二、编写C++程序

在visual studio 中新建一个项目,如下图。

将刚才生成的helloworld_HelloWorld.h,D:\Java\include\jni.h,D:\Java\include\win32\jni_md.h拷贝到D:\Projects\VS\HelloWorld\HelloWorld\HelloWorld(以上路径均需要根据自己的路径修改,前两个路径是JAVA_HOME下的)。

在Visual Studio中添加上述三个头文件。如图所示。

对helloworld_HelloWorld.h第二行进行修改,将

#include <jni.h>

修改为

#include "jni.h"

在stdafx.h中添加以下代码,将头文件包含进来。

#include "helloworld_HelloWorld.h"

在HelloWorld.cpp中添加对应的函数定义。HelloWorld.cpp代码如下:

// HelloWorld.cpp: 定义 DLL 应用程序的导出函数。//#include "stdafx.h"JNIEXPORT void JNICALL Java_helloworld_HelloWorld_sayHello(JNIEnv *, jobject){printf("Hello world from C++.");}

在Visual Studio选择x64(不是x86)来生成64位的动态链接库文件。

最后点击工具栏中的生成——》生成解决方案。输出显示生成成功,如下图。

三、运行java程序

将D:\Projects\VS\HelloWorld\HelloWorld\x64\Debug\HelloWorld.dll拷贝到%JAVA_HOME%\bin文件夹中(楼主这里是D:\Java\bin)。

打开eclipse,直接运行第一步的工程。可以看到下方窗口输出“Hello world from C++.”。

大功告成!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。