专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Java教程 » java调用c:多语言调用的 Java调用C/C++ »正文

java调用c:多语言调用的 Java调用C/C++

来源: 发布时间:星期一, 2009年2月23日 浏览:0次 评论:0
Java C/C 1.创建个类com.test.TestCall内容如下 package com.test; public TestCall { public native String getResponse(String request); }

2.编译得到TestCall.文件 命令javah com.test.TestCall(如果不好使前面执行 path=.) 得到com_test_TestCall.h文件内容如下 /* DO NOT EDIT THIS FILE - it is machine generated */ # /* Header for com_test_TestCall */ #ndef _Included_com_test_TestCall # _Included_com_test_TestCall #def __cplusplus extern "C" { #end /* * Class: com_test_TestCall * Method: getResponse * Signature: (Ljava/lang/String;)Ljava/lang/String; */ JNIEXPORT j JNICALL Javacom_test_TestCall_getResponse (JNIEnv *, jobject, j); #def __cplusplus } #end #end

3.新建C/C工程引入com_test_TestCall.h头文件 TestCall.cpp # "com_test_TestCall.h" JNIEXPORT j JNICALL Java_com_test_TestCall_getResponse (JNIEnv *pEnv, jobject obj, j jstr) { j response = pEnv->NewStringUTF("call C:"); jboolean isCpoy; const jchar *request = pEnv->GetStringChars(jstr,&isCpoy) ; //todo pEnv->ReleaseStringChars(jstr,request); response; }

编译成TestCall.dll 4.将TestCall.dll放到eclipse工程下(或者运行参数java -Djava.library.path=“dll目录”) 完整TestCall.java package com.test; public TestCall { { //dll名字 .loadLibrary("TestCall"); } public native String getResponse(String request); public void (String args) { TestCall call = TestCall; String message = call.getResponse("hello"); javax.swing.JOptionPane.showMessageDialog(null, message); } }

5.运行java弹出对话框就算成功了 当然现在有Java Native Access这个开源项目方便了我们 JNA里面不需要按照com_test_XX这种格式定义头文件只要定义个思路方法接口支持指针非常好用

TAG: Java JAVA java 语言
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: