`

Eclipse+CDT+MinGW java调用dll或so动态库文件(c++/c)

 
阅读更多

java调用dll或so动态库文件(c++/c)开发平台:Eclipse3.6.1.1+CDT(cdt-master-7.0.0)+MinGW(MinGW-5.0.2)

 

一:在Eclipse中搭建开发C/C++的环境

1:下载并安装cdt :http://www.eclipse.org/cdt/downloads.php  :选择自己eclipse 支持的cdt插件,下载,并且
通过eclipse-->help-->install new software安装cdt

 

二:下载并安装MinGW

1: 下载地址:http://sourceforge.net/project/showfiles.php?group_id=2435
      下载并安装  (在线安装的 有点慢!)

2:配置环境变量 (我将MinGW安装在C:\MinGW)

     PATH:    C:\MinGW\bin  
     C_INCLUDE_PATH:  C:\MinGW\include
     CPLUS_INCLUDE_PATH:   C:\MinGW\include\c++\3.4.2;C:\MinGW\include\c++\3.4.2\mingw32;C:\MinGW\include\c++\3.4.2\backward;C:\MinGW\include
     LIBRARY_PATH:   C:\MinGW\lib

3:相关设置
eclipse-->Window->Preferences->C/C++->New CDT project wizard->Makefile Project
找到 Binary Parser 把Elf Parser取消, 选中 PE Windows Parser.
由于在MinGW目录下的make文件名为"mingw32-make.exe", eclipse默认的调用文件名为"make.exe"
所以先将MinGW目录下文件名为"mingw32-make.exe"做个备份,然后将该文件重命名为"make.exe"

 

三:编写一个java类 生成.h头文件

 

package test;
class Hello
{
    
public native void sayHello();
    
static
    
{
        System.loadLibrary(
"hello");
    }

    
public static void main(String[] args)
    
{
        Hello h 
= new Hello();
        h.sayHello();
    }

}

 

在项目的src目录下

用命令 javac test/Hello.java 生成 Hello.class文件

          javah -jni test.Hello 生成 test_Hello.h文件

内容如下:

#ifndef _Included_test_Hello
#define _Included_test_Hello
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     test_Hello
 * Method:    sayHello
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_test_Hello_sayHello
  (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif

 

四:创建一个C项目  生成dll文件

   创建一个c project 并把test_Hello.h拷进去

1.编写C类:hello.c

 

#include <jni.h>
#include "test_Hello.h"
#include <stdio.h>

int main(void) {
 return 0;
}
JNIEXPORT void JNICALL Java_test_Hello_sayHello(JNIEnv *env, jobject obj) {
   printf("Hello World !\n");
   return;
}

 

2.生成hello.o文件

右键点击项目 make targets--build生成hello.o
   target name 随便
   make target 随便
   命令默认就可以

3.生成hello.dll文件

   cmd切换到hello.o目录下

   执行命令:gcc -I"D:\DevelopmentSoft\jdk1.6.0_07\include"  -Wl,--add-stdcall-alias -shared -o hello.dll hello.o

  在该目录下则会生成hello.dll文件

  备注:若是c++项目 则将gcc 改成g++即可

五:将该hello.dll文件 拷入先前的Hello.java项目中 执行

 

   控制台输出:Hello World !

 

六:备注

1:java调用so(C)
   java和c / c++通信都可以通过jni来实现。 在java代码中:
   System.loadLibrary("Hello");
   Hello不能写成Hello.dll或者Hello.so,它会根据系统平台自动填充,需要注意的是在unix/linux下生成.so动态库文件的时候,
   需要在Hello.so前添加lib,否则找不到.so文件(libHello.so),运行的时候需要指定.so的路径:
   java  -Djava.library.path=/homw/user/so所在目录  -jar  Hello.jar 
  
2:命令整理:
  以c为例(如果是c++,则把gcc改成g++就OK):
  1:在unix/linux环境下
  1.1:生成.o文件
  gcc -I/usr/lib/j2sdk1.5-ibm/include -fPIC -c example.c
  1.2:生成动态库.so文件
  gcc -shared -WI -soname example.o -o  libexample.so
  2:在windows环境下
  2.1:生成.o文件
  gcc -c -I"D:\Program Files\Java\jdk1.6.0_10\include" -I"D:\Program Files\Java\jdk1.6.0_10\include\win32" -o Hello.o Hello.c
  2.2:生成dll文件
  gcc -I"D:\Program Files\Java\jdk1.6.0_10\include" -Wl,--add-stdcall-alias -shared -o Hello.dll Hello.o

 

 

 

参考地址:http://www.blogjava.net/orangewhy/archive/2007/05/24/119645.html

               http://ironurbane.iteye.com/blog/375740

 

以上两个参考地址中 我中和了一下 才能出来!

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Eclipse+CDT+MinGW+gdb安裝手冊

    本篇将详细介绍如何在Windows环境下,利用Eclipse(一个流行的开源IDE)、CDT(C/C++ Development Toolkit,Eclipse的C/C++插件)、MinGW(Minimalist GNU for Windows,提供GCC编译器)以及gdb(GNU调试器)搭建...

    免费下载:eclipse+CDT插件+minGW编译软件+安装c++说明书.rar

    这个压缩包提供了所有必要的组件,包括Eclipse IDE、CDT(C/C++ Development Tooling)插件、MinGW(Minimalist GNU for Windows)编译器,以及一份详细的安装和配置指南。 首先,Eclipse是一个非常流行的开源IDE,...

    Eclipse+CDT+MinGW_配置_CC++_开发环境

    ### Eclipse+CDT+MinGW 配置 C/C++ 开发环境详解 #### 一、前言 本文旨在详细介绍如何通过 Eclipse、CDT 和 MinGW 配置一个完整的 C/C++ 开发环境。Eclipse 是一款功能强大的开源集成开发环境(IDE),广泛应用...

    eclipse+cdt+MinGW+gdb安装--gdb.exe

    本来想全部上传,文件太大超过50M,eclipse和cdt,MinGW安装问题不大,安装 MinGW-6.3.exe 配置环境变量,在path里加入D:\MinGW\bin 路径 安装 eclipse-SDK-3.7-win32.zip help--》install new software--》add--...

    如何在Linux使用Eclipse + CDT开发C C++程序

    在 Linux 使用 Eclipse + CDT 开发 C/C++ 程序 Linux 是一个以 C/C++ 开发为主的平台,无论是 Kernel 或是 Application,主要都使用 C/C++ 开发。传统在 Linux 下开发程序,是在文字模式下,利用 vi 等文字编辑器...

    Eclipse+CDT+MinGW安装手册

    本文将详细介绍如何通过Eclipse集成开发环境(IDE)结合CDT插件及MinGW编译器来构建C/C++开发环境。Eclipse是一款非常流行的开源IDE,支持多种编程语言,包括Java、C/C++等。CDT (C/C++ Development Tools) 是专门为...

    eclipse +cdt+MinGW.pdf

    - **CDT (C/C++ Development Tools)**: 这是Eclipse的一个插件,用于支持C和C++的开发。 - **MinGW (Minimalist GNU for Windows)**: 一种免费的编译器集合,它包含了用于编译C和C++程序的所有工具。 #### 2. MinGW...

    最新Eclipse&CDT + MinGW + Qt 在XP下的安装

    这个过程主要包括三个主要组件:Eclipse(一个流行的开源集成开发环境,尤其适合Java开发),CDT(Eclipse的C/C++ Development Toolkit扩展,用于C和C++编程),以及MinGW(Minimalist GNU for Windows,一个提供GCC...

    Eclipse+CDT+MinGW+Qt开发环境搭建

    Eclipse CDT(C/C++ Development Tools)是Eclipse平台上的一个插件,专门为C和C++开发者提供支持。 接下来,我们需要安装MinGW(Minimalist GNU for Windows)。这是一个可自由使用的软件开发工具集,用于在...

    windows+eclipse+cdt开发环境配置

    本文将深入探讨如何在Windows操作系统上,结合Eclipse IDE与CDT插件,搭建一个高效的C/C++开发环境。 ### 一、下载并安装Eclipse 首先,前往Eclipse官方网站(http://www.eclipse.org/downloads/),选择适合...

    windows下配置eclipse+CDT+Cygwin调试平台

    在Windows操作系统上构建一个强大的C/C++开发和调试环境,我们可以使用Eclipse集成开发环境(IDE)配合CDT(C/C++ Development Tooling)插件和Cygwin工具集。以下是一个详细的步骤指南: 首先,确保你有Java ...

    Eclipse + CDT + YAGARTO + J-Link,STM32开源开发环境搭建与调试

    这篇文档讲解Eclipse + CDT + YAGARTO + J-link的STM32开源开发环境搭建。基于开源的精神,编写发布此文档,希望对需要的人有用。本人试过好多开源平台,比较推崇Em::Blocks。可以查看本人另一篇编写的文档:...

    Eclipse CDT(C & C++ Development Tooling)开发环境的搭建.pdf

    4. 配置好JDK和MinGW后,即可开始使用Eclipse CDT进行C/C++程序的开发。 #### 五、示例程序 文档未提供具体的示例程序代码,但在实际操作过程中,建议参考官方文档或社区教程创建简单的C/C++项目进行测试,以验证...

    Linux下eclipse+cdt进行C开发调试

    ### Linux下使用Eclipse+Cdt进行C语言开发与调试 #### 1. 引言 在Linux平台上进行C语言开发时,传统的编辑器如Vim虽然功能强大且轻便,但在开发大型项目时效率较低。随着Linux图形界面的不断完善和发展,越来越多...

    Eclipse+CDT+GDB调试android_NDK程序

    【Eclipse+CDT+GDB调试Android NDK程序】是一种在Eclipse集成开发环境中,利用CDT(C/C++ Development Tooling)和GDB(GNU Debugger)进行原生代码调试的技术。Android NDK允许开发者在Android应用中使用C或C++编写...

    eclipse+ MinGW总结

    本文将详细介绍如何在Eclipse中配置C/C++开发环境,特别关注使用CDT插件和MinGW编译器的过程。 #### 二、Eclipse + CDT + MinGW配置详解 **1. 相关软件的下载、安装和配置** - **下载Eclipse SDK** 首先,访问...

    eclpse+cdt+mingw+msys安装文档

    Eclipse是一个跨平台的IDE,特别是通过CDT(C/C++ Development Tools)插件,使得Eclipse能够支持C++编程。CDT不仅提供了代码编辑、构建管理、调试等功能,还允许开发者自定义工作流以适应不同的项目需求。 MinGW...

    Eclipse+CDT+GDB调试android NDK程序

    2. **配置Eclipse进行图形化调试**:通过Eclipse的Debug视图,可以设置断点、查看变量值等,从而更直观地调试C/C++代码。 3. **设置断点**:在C/C++代码中设置断点,通过Eclipse的Debug视图可以查看程序运行状态、...

Global site tag (gtag.js) - Google Analytics