java类封装成dll
1,建立测试类,注意英文注释部分,用汉语直接编译会乱码
public class Hello {
//native method is used for call other language procedure
//if use chinese here then Compile would be gibberish
public native void printHello(); static{
System.loadLibrary("HelloWorld");//加载生成的dll文件
} public static void main(String[] args) {
new Hello().printHello();
} }
2,编译
javac Hello.java
3,生成.h文件(.h文件为C语言的头文件,内含函数声明、宏定义、结构体定义等内容)
javah Hello
.h文件内容
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Hello */
#ifndef _Included_Hello
#define _Included_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Hello
* Method: printHello
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_Hello_printHello
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
4,编写HelloWorld.c文件(.c则为C语言的源文件,内含函数实现,变量定义等内容)
#include "jni.h"
#include "Hello.h"
//#include other headers
JNIEXPORT void JNICALL Java_Hello_printHello(JNIEnv *env, jobject obj)
{
printf("Hello world!\n");
return;
}
注意,jni.h为%JAVA_HOME%\include\jni.h,Hello.h是第3步生成的,Java_Hello_printHello中的Java_Hello_不能去掉
5,下载安装mingw, 并将其安装目录配置到系统环境变量
mingw_64位最新下载地址:mingw_64位最新版下载地址
该软件的作用是在windows系统使用gcc和g++命令,对c文件和c++文件进行编译,生成.o文件, 进而生成.dll文件。64位的只能生成64位的dll文件。若要生成32位的dll文件,请下载32位的mingw.
mingw_32最新版下载地址:mingw_32位最新版下载地址
安装完后将{minw安装目录}\mingw64\bin放到path即可。
安装成功截图:
6,成功.o文件(注意HelloWorld.c的路径和mingw/bin的关系,要保证对应能找到对方)
gcc -c -I"%JAVA_HOME%\include" -I"%JAVA_HOME%\include\win32" HelloWorld.c
7,生成.dll文件(注意事项同6)
gcc -Wl,--add-stdcall-alias -shared -o HelloWorld.dll HelloWorld.o
8,执行java命令, 验证是否成功。
java Hello
输出Hello World,成功!
示例项目下载:forDll.rar(内含项目、.c\.h\.o\.dll所有文件)
插件mingw64位本人百度云下载:https://pan.baidu.com/s/12XGJYTYEJp0-bORB_UfRNA
java类封装成dll的更多相关文章
- 将QT开发的界面程序封装成DLL,在VC中成功调用
最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...
- C#封装成DLL,并在C#中调用
一.C#封装成DLL 1.在VS中创建项目选择类库,命名 myDll 2.建立好项目后自动生成的代码如下: 代码修改如下,添加自己要封装的C#代码,注意修饰符必须为public using Syste ...
- 将QT开发的界面程序封装成DLL,在VC中成功调用(必须有消息循环,所以使用了QTWinmigrate,附CSDN可下载的Demo)
最近手头的一个项目需要做一个QT界面,并且封装成DLL,然后再动态调用DLL给出的接口函数,使封装在DLL内部的QT界面跑起来,在网上查了很多资料,今天终于成功了,经验不敢独享,因为CSDN给了我很多 ...
- 使用DOS命令将类库封装成dll
1.Windows键+R.输入cmd进入DOS 2.使用 cd 加路径找到需要封装成dll的类库文件 3.csc /target:library /out:dll的名字.DLL 需要封装的cs文件
- unity脚本封装成dll
先申明一下这样做是有需要的.当我们需要把脚本提供给第三方使用,而又不希望对方看到具体的实现过程,这时候就需要将代码封装编译成dll文件,供第三方调用.或是多个项目都要用到同一个模块或同样的功能,则可以 ...
- 如何将.il、.res文件封装成dll文件
将你的.il..res文件保存在你的硬盘上,如下图: 我存放的路径在E盘的test文件夹中,我们开始封装了咯.进入DOS命令,如下图: 我们通过DOS命令先进入.il..res文件目录,如下图: 然后 ...
- C#.NET常见问题(FAQ)-如何把写好的类编译成dll文件
1 新建一个类库项目 2 直接改写这个Class1.cs文件 3 记得要添加Windows.Forms引用 4 我直接把在别的项目中做好的cs文件搞到这里来,连文件名也改了(FilesDi ...
- [转载]Java类打包成JAR文件
原文传送门:http://www.2cto.com/kf/201204/129495.html 使用的工具及环境: MyEclipse 7.5 Java Enterprise.JDK1.6.0 打包J ...
- C#如何把写好的类编译成dll文件
1 新建一个类库项目 2 直接改写这个Class1.cs文件 3 记得要添加Windows.Forms引用 4 我直接把在别的项目中做好的cs文件搞到这里来,连文件名也改了(FilesDi ...
随机推荐
- 小麦成长记-<专业盗图好几年>
========================================图片来源朋友圈的朋友~
- js 编写一个神奇的四则运算
写一个算法,有时候可以用简单的方法就可以写出来,但是只能针对特定的环境,如果要能够适应不同的环境,就需要对算法进行优化,在优化的过程中,你会觉得非常神奇,下面来看一个简单的四则运算的算法编写方式: 1 ...
- C语言复习:结构体
结构体专题 01.结构体类型定义及结构体变量定义 char c1,char c2, char name[62]; int age char name[62]; int age,char ...
- 使用rgba设置输入框背景透明
项目中遇到要求输入框的背景设置透明度,但文字不受影响,如下图 输入框使用input标签 <input ref="searchText" type="search&q ...
- adb push和adb install区别
一般的,Android 应用程序有两种安装方法: 1. 将应用程序的apk文件push到手机中,用如下命令: adb push xxxx.apk /system/app. 2. 用adb instal ...
- Git设置/取消代理
设置代理 git config --global http.proxy http://proxy.com:1234 git config --global https.proxy http://pro ...
- springboot 集成dubbo
- Linux部署项目
1 安装jdk 第一步:获取Linux系统中jdk安装包和tomcat安装包(后面要用,所以上传两个) 第二步:使用secureCRT客户端工具连到服务器 第三步:使用命令创建一个目录,作为软件的安装 ...
- java-学习8
方法的声明及使用 public class function { public static void main(String[] args) { printInfo();//调用printInfo( ...
- 虚拟机 安装 CentOS7
初次接触CentOS,最好是在虚拟机中安装: 因为CentOS的安装选项有很多,不理解的情况下千万不要在物理机上尝试: 不然可能出现这种情况:安装好以后,只有黑色的屏幕,只能在里面敲命令:这对于新手来 ...