- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JAVA如何调用C或者C生成dll
JAVA如何调用C或者C++生成的dll
本文为在 32 位 Windows 平台上实现 Java 本地方法调用dll的示例。由于对C语言不是很熟悉,有部分内容摘自网络。
第一步、编写java文件
package com.ztsoft.jni;
public class MyDll {
static {
System.loadLibrary(MyDll);
}
public native static String HelloWord();
public native static String HelloWord(int num);
}
第二步、编译生成h文件
1、编译
D:\MyEclipse 6.5M1 Blue\workspace\javaWorkSpace\srcjavac com/ztsoft/jni/MyDll.java
(生成MyDll.class位于jni目录下)
2、生成h文件
D:\MyEclipse 6.5M1 Blue\workspace\javaWorkSpace\srcjavah com.ztsoft.jni.MyDll
(生成com_ztsoft_jni_MyDll.h这个文件位于src目录下)
/* DO NOT EDIT THIS FILE - it is machine generated */
#include jni.h
/* Header for class com_ztsoft_jni_MyDll */
#ifndef _Included_com_ztsoft_jni_MyDll
#define _Included_com_ztsoft_jni_MyDll
#ifdef __cplusplus
extern C {
#endif
/*
* Class: com_ztsoft_jni_MyDll
* Method: HelloWord
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_ztsoft_jni_MyDll_HelloWord__
(JNIEnv *, jclass);
/*
* Class: com_ztsoft_jni_MyDll
* Method: HelloWord
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_ztsoft_jni_MyDll_HelloWord__I
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
第三步、编写C++文件
在具体实现的时候,我们只关心两个函数原型。
JNIEXPORT jstring JNICALL Java_com_ztsoft_jni_MyDll_HelloWord__
(JNIEnv *, jclass);
JNIEXPORT jstring JNICALL Java_com_ztsoft_jni_MyDll_HelloWord__I
(JNIEnv *, jclass, jint);
以下我用的是vs2005编写c程序。
1、选择Visual C++ - Win32 - Win32项目(填写项目名称等)点击确定。
这一步选择DLL,勾选空项目,点击完成。
然后右击右侧的源文件,添加新相
然后再将com_ztsoft_jni_MyDll.h文件添加到C++的头文件中(先拷贝到工程下,然后在引入现有项)
然后拷贝原函数到MyDll.cpp文件中
#include com_ztsoft_jni_MyDll.h
JNIEXPORT jstring JNICALL Java_com_ztsoft_jni_MyDll_HelloWord__
(JNIEnv *, jclass){
}
JNIEXPORT jstring JNICALL Java_com_ztsoft_jni_MyDll_HelloWord__I
(JNIEnv *, jclass, jint){
}
注意:一定要把JDK中的include文件夹中(和它下面的win32)的几个头文件拷贝到C++工程文件夹中。然后引入。
否则编译的时候出现类似的错误
根据头文件的路径,修改com_ztsoft_jni_MyDll.h
修改jni_md.h文件的引入
根据实际情况,修改MyDll.cpp文件。
第四步、编译生成DLL
选择build-rebuild?all对所写的程序进行编译。点击build-build?MyDll.DLL
您可能关注的文档
- 离子交换剂在水处理技术中的新进展_C_ACLMON.pdf
- 第23届全国高中学生化学竞赛理论题答案-掌门1对1.pdf
- 脑白金的广告曾经被很多的所谓广告业内人士评价为缺乏....ppt
- 西南交通大学土木工程考研试题工程流体力学模拟题及答案1.pdf
- 经济学视角下的国际学生学业差距分析_艾瑞克_A_汉纳谢克.pdf
- 粗放经营茶园土壤昆虫病原真菌种群多样性及时间生态位_郭先见.pdf
- 行政组织学_15年01月试题.pdf
- 电子商务咨询:《B2C手册》2012版.pdf
- 第三章投资方案经济评价指 标.ppt
- 综合实践活动.doc.ppt
- 林德115系列叉车维修手册 英文.pdf
- 林德E16C-03, E16P-03, E20P-03叉车维修手册 英文.pdf
- 林德H50T叉车维修手册 英文.pdf
- 6.1.2 化学反应与电能 课件高一下学期化学人教版(2019) 必修第二册.pptx
- 零碳项目初步设计(模板).docx
- 金融从业者必懂的宏观经济指标实战指南:2025年投资策略与市场分析.docx
- 第二章 第二节 氯及其化合物-第1课时 氯气的性质课件高一上学期化学人教版(2019)必修第一册.pptx
- 产品经理完全指南:Axure原型设计从入门到实战全解.docx
- 6.1.2 影响化学反应速率的因素 课件高一下学期化学苏教版(2020)必修第二册.pptx
- 零碳项目融资方案(模板).docx
文档评论(0)