Eclipse中CDT+MinGW实现Java调用C++ 下载本文

前期准备

首先,在eclipse中安装CDT插件,C/C++环境MinGW(配置好环境变量)。

Java端编写类文件,以及C++头文件的生成 1、建立Java项目MyTest,编写Helloworld类 package com.mytest;

public class HelloWorld { //加载C++动态连接库 static {

System.loadLibrary(\);

}

//定义native修饰的方法,具体用C++实现 public native static void sayHello(); public static void main(String[] args) { sayHello(); } }

2、在dos下生成C++头文件

进入到Java项目MyTest HelloWorld类所在的bin目录,我的目录在: D:\\Program Files\\eclipse-workspace\\MyTest\\bin 用javah命令生成C++头文件(定位到HelloWorld的class文件,使用完全限定名:包名.类名):

javah -jni com.mytest.HelloWorld

在bin目录下生成com_mytest_HelloWorld.h头文件

下面就是在eclipse中编写C++,以及dll文件的生成

3、建立C++项目MyCppTest,编写C++文件HelloWorld.cpp

//导入头文件

#include \

//#include \ #include

#include \ using namespace std; //具体实现sayHello()方法 JNIEXPORT void JNICALL

Java_com_mytest_HelloWorld_sayHello(JNIEnv *env, jclass cla){ cout<<\<

\和\这两个文件,分别在jdk安装目录下的include和include/win32下,需要将它们拷贝到mingw安装目录下的include目录里面

4、将上面生成的头文件拷贝到HelloWorld.cpp同一目录下

5、编译配置

选中C++项目MyCppTest,右击,选择properties。第一步配置你的编译器连接,配置如下

然后就是,你生成的dll属性配置 Command中填写g++

接着在MinGW C++ Linker下的Miscellaneous中,Linker flags中填写: -Wl,--add-stdcall-alias -static-libgcc -static-libstdc++ -shared

在MinGW C++ Linker下的Shared Library Settings中,勾选右侧的Shared选项