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
以上两个参考地址中 我中和了一下 才能出来!
分享到:
相关推荐
本篇将详细介绍如何在Windows环境下,利用Eclipse(一个流行的开源IDE)、CDT(C/C++ Development Toolkit,Eclipse的C/C++插件)、MinGW(Minimalist GNU for Windows,提供GCC编译器)以及gdb(GNU调试器)搭建...
这个压缩包提供了所有必要的组件,包括Eclipse IDE、CDT(C/C++ Development Tooling)插件、MinGW(Minimalist GNU for Windows)编译器,以及一份详细的安装和配置指南。 首先,Eclipse是一个非常流行的开源IDE,...
### Eclipse+CDT+MinGW 配置 C/C++ 开发环境详解 #### 一、前言 本文旨在详细介绍如何通过 Eclipse、CDT 和 MinGW 配置一个完整的 C/C++ 开发环境。Eclipse 是一款功能强大的开源集成开发环境(IDE),广泛应用...
本来想全部上传,文件太大超过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 是一个以 C/C++ 开发为主的平台,无论是 Kernel 或是 Application,主要都使用 C/C++ 开发。传统在 Linux 下开发程序,是在文字模式下,利用 vi 等文字编辑器...
本文将详细介绍如何通过Eclipse集成开发环境(IDE)结合CDT插件及MinGW编译器来构建C/C++开发环境。Eclipse是一款非常流行的开源IDE,支持多种编程语言,包括Java、C/C++等。CDT (C/C++ Development Tools) 是专门为...
- **CDT (C/C++ Development Tools)**: 这是Eclipse的一个插件,用于支持C和C++的开发。 - **MinGW (Minimalist GNU for Windows)**: 一种免费的编译器集合,它包含了用于编译C和C++程序的所有工具。 #### 2. MinGW...
这个过程主要包括三个主要组件:Eclipse(一个流行的开源集成开发环境,尤其适合Java开发),CDT(Eclipse的C/C++ Development Toolkit扩展,用于C和C++编程),以及MinGW(Minimalist GNU for Windows,一个提供GCC...
Eclipse CDT(C/C++ Development Tools)是Eclipse平台上的一个插件,专门为C和C++开发者提供支持。 接下来,我们需要安装MinGW(Minimalist GNU for Windows)。这是一个可自由使用的软件开发工具集,用于在...
本文将深入探讨如何在Windows操作系统上,结合Eclipse IDE与CDT插件,搭建一个高效的C/C++开发环境。 ### 一、下载并安装Eclipse 首先,前往Eclipse官方网站(http://www.eclipse.org/downloads/),选择适合...
在Windows操作系统上构建一个强大的C/C++开发和调试环境,我们可以使用Eclipse集成开发环境(IDE)配合CDT(C/C++ Development Tooling)插件和Cygwin工具集。以下是一个详细的步骤指南: 首先,确保你有Java ...
这篇文档讲解Eclipse + CDT + YAGARTO + J-link的STM32开源开发环境搭建。基于开源的精神,编写发布此文档,希望对需要的人有用。本人试过好多开源平台,比较推崇Em::Blocks。可以查看本人另一篇编写的文档:...
4. 配置好JDK和MinGW后,即可开始使用Eclipse CDT进行C/C++程序的开发。 #### 五、示例程序 文档未提供具体的示例程序代码,但在实际操作过程中,建议参考官方文档或社区教程创建简单的C/C++项目进行测试,以验证...
### Linux下使用Eclipse+Cdt进行C语言开发与调试 #### 1. 引言 在Linux平台上进行C语言开发时,传统的编辑器如Vim虽然功能强大且轻便,但在开发大型项目时效率较低。随着Linux图形界面的不断完善和发展,越来越多...
【Eclipse+CDT+GDB调试Android NDK程序】是一种在Eclipse集成开发环境中,利用CDT(C/C++ Development Tooling)和GDB(GNU Debugger)进行原生代码调试的技术。Android NDK允许开发者在Android应用中使用C或C++编写...
本文将详细介绍如何在Eclipse中配置C/C++开发环境,特别关注使用CDT插件和MinGW编译器的过程。 #### 二、Eclipse + CDT + MinGW配置详解 **1. 相关软件的下载、安装和配置** - **下载Eclipse SDK** 首先,访问...
Eclipse是一个跨平台的IDE,特别是通过CDT(C/C++ Development Tools)插件,使得Eclipse能够支持C++编程。CDT不仅提供了代码编辑、构建管理、调试等功能,还允许开发者自定义工作流以适应不同的项目需求。 MinGW...
2. **配置Eclipse进行图形化调试**:通过Eclipse的Debug视图,可以设置断点、查看变量值等,从而更直观地调试C/C++代码。 3. **设置断点**:在C/C++代码中设置断点,通过Eclipse的Debug视图可以查看程序运行状态、...