| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 559 人关注过本帖
标题:在JAVA中调用C/C++的技术
取消只看楼主 加入收藏
harryketty
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-4-17
收藏
 问题点数:0 回复次数:0 
在JAVA中调用C/C++的技术

首先,先感谢三位版主的支持和帮助!
其次,我觉得作为一个对编程充满热情的人应该勇敢的去探索和研究新的问题而不是回避它!
第三,我认为,全世界的技术应该实现资源共享!
第四,我个人的编程水平确实有限,但是我不会放弃成为一名出色的PROGRAMMER的理想.
第五,以下是我研究后的结论--有一定程度的错误--请各位见量和指教:大家一同进步,中国才有希望
1.用JAVA编写:
public class testdll
{
static
{
System.loadLibrary("zuoye"); /*zuoye是所要调用的C/C++程序*/
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
testdll test = new testdll();
test.set(10);
System.out.println(test.get());
}
}
2.用C++编写testdll.h文件:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class testdll */
#ifndef _Included_testdll
#define _Included_testdll
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: testdll
* Method: get
* Signature: ()I
*/
JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass);
/*
* Class: testdll
* Method: set
* Signature: (I)V
*/
JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
它是所调用C/C++的头文件!
3. 用C++编写:
#include "testdll.h"
int i = 0;
JNIEXPORT jint JNICALL Java_testdll_get (JNIEnv *, jclass)
{
return i;
}
JNIEXPORT void JNICALL Java_testdll_set (JNIEnv *, jclass, jint j)
{
i = j;
}
生成的是testdll.cpp
4.将zuoye用C++编译和运行一次---生成zuoye.exe
5.在VC++6.0内做以下动作:
a.新建->工程->Win32 Dynamic-Link Libary->工程名字zuoye
b.在此工程内添加testdll.h为C++头文件;testdll.cpp为C++源文件.
c.编译整个工程.
d.然后,将JAVA安装路径内INCLUDE内的JNI.H和JNI_MD.h添加到VC++6.0的安装路径的INCLUDE下;
e.将VC++6.0内的MYPROJECT中的ZUOYE内的ZUOYE.DLL放在testdll.java的目录下(两者同一个目录)
f.然后,运行testdll.java.

希望各位一起努力,不断完善和改进!

搜索更多相关主题的帖子: 技术 JAVA 
2006-05-06 15:12
快速回复:在JAVA中调用C/C++的技术
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019582 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved