java混编_c和java混编

java中调用c语言

首先编写Main.java

public class Main

{

public native static int getStrNum(byte str[], int strLen);

}

在命令行中,使用如下命令编译:

javac Main.java

下面的命令将生成Main.h头文件

javah Main

打开vs2008, 新建工程MakeDll(win32 console application),设置项目属性如下:

在project-》MakeDll Properties-》在General选项卡上,选择生成dll文件。

同时需要在项目的c++下general下的Additional include directory下加载jdk安装目录下的include文件夹和该文件夹下的win32

子目录。

将第一步生成的Main.h文件假如到工程中,同时新建一个main.cpp文件,在其中假如如下代码:

#include "Main.h"

#include

JNIEXPORT jint JNICALL Java_Main_getStrNum  (JNIEnv *env, jclass cls, jbyteArray str, jint strLen)

{

jbyte *buffer = (*env).GetByteArrayElements(str, 0);

buffer[strLen] = ' ';

jint len = strlen((char*)buffer);

return len;

}

编译即可生成MakeDll.dll文件。

在java源文件中调用该dll文件(注意需要将dll文件和编译的class文件放置在同一个文件夹下面)

java源文件代码如下:

public class Main

{

static

{

System.loadLibrary ("MakeDll");

}

public native static int getStrNum (byte[] str, int strLen);

public static void main (String[] args)

{

Main instance = new Main ();

String str = new String ("haha");

int num = instance.getStrNum (str.getBytes (), str.length ());

System.out.println (num);

}

}

编译该java源文件,同时执行该文件。

javac Main.java

java Main

即可输出相应结果。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-11-27 22:25

浏览 2326

评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值