在Java中调用C++
在java中调用自己的c++代码是一件简单的事情,以下类为例:
class Prompt {
private native String getLine(String prompt);
public static void main(String args[]) {
Prompt p = new Prompt();
String input = p.getLine("Type a line: ");
System.out.println("User typed: " + input);
}
static {
System.loadLibrary("MyImpOfPrompt");
}
}
我们希望在Prompt类中可以调用c++下的getLine函数,第一步就是先编译该java文件:
javac Prompt.java
此时应该已经生成了Prompt.class文件,然后使用命令:
javah -jni Prompt
即可生成相应的.h文件,其内容为:
JNIEXPORT jstring JNICALL
Java_Prompt_getLine(JNIEnv *, jobject, jstring);
事实上Java调用c++只需要满足一个接口命名规范即可,而javah -jni命令则为快速生成接口提供了方便。
最后,记得将你的c++代码编译为libMyImpOfPrompt.so
更详细的规范及操作可以参见
http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/index.html
相关文档:
import java.io.*;
public class FileReaderSample {
public static void main(String args[]) throws IOException
{
// 建立可容纳1024个字符的数组
char data[]=new char[1024];
// 建立对象fr
FileReader fr= ......
这是一个简单的读取文件的代码,并试着读取一个log文件,再输出。
import java.io.*;
public class FileToString {
public static String readFile(String fileName) {
String output = "";
File file = new File(fileName);
if(file.exists()){
......
1. JVM内存段分配及启动参数:
J2EE服务器的内存组成:
? Java堆:我们的程序和对象都在这个堆进行管理
? C堆:当引用到一些Native的对象,如网络访问、OCI方式的数据库连接等都在C堆里进行管理
Java堆的描述:
如下图
内存由 Perm 和 Heap 组成. 其中
Heap = {Old + young = { Eden , from, to } }
? You ......
个 人 简 历
姓 名:
王志国
性 别:
男
年 龄:
23岁
联系电话:
13124799190
专 业:
计算机技术
工作时间:
一年以上
学 历:
大专
邮 箱:
andy478168@yeah.net
★ 求职意向
工作性质 ......
个 人 简 历
姓 名:
王志国
性 别:
男
年 龄:
23岁
联系电话:
13124799190
专 业:
计算机技术
工作时间:
一年以上
学 历:
大专
邮 箱:
andy478168@yeah.net
★ 求职意向
工作性质 ......