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程序成功


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值