Eclipse中CDT+MinGW实现Java调用C++

前期准备

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

Java端编写类文件,以及C++头文件的生成

1、建立Java项目MyTest,编写Helloworld类

package com.mytest;

 publicclassHelloWorld {

   //加载C++动态连接库

   static {

        System.loadLibrary("HelloWorld");

}

//定义native修饰的方法,具体用C++实现

   publicnativestaticvoidsayHello();

   publicstaticvoidmain(String[] args) {

        sayHello();

   }

}

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

进入到Java项目MyTest HelloWorld类所在的bin目录,我的目录在:

D:\ProgramFiles\eclipse-workspace\MyTest\bin

用javah命令生成C++头文件(定位到HelloWorld的class文件,使用完全限定名:包名.类名):

javah -jnicom.mytest.HelloWorld

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

 

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

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

//导入头文件

#include"jni.h"

//#include "jni_md.h"

#include<iostream>

#include"com_mytest_HelloWorld.h"

usingnamespacestd;

//具体实现sayHello()方法

JNIEXPORT void JNICALL Java_com_mytest_HelloWorld_sayHello(JNIEnv *env, jclass cla){

   cout<<"hello world"<<endl;

}

 "jni.h""jni_md.h"这两个文件,分别在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选项





配置好后,编译生成dll文件 HelloWorld.dll(必须安装相同位数的eclipse和mingw版本,生成的dll文件必须和eclipse的位数相同

 

Java通过dll调用C++

6、将dll文件HelloWorld拷贝到Java项目MyTest的类HelloWorld同一目录下,

右键Java项目MyTest,build path

 

7、最后,运行Java程序成功


猜你喜欢

转载自blog.csdn.net/younglittlet/article/details/80559527