eclipse+VC6.0开发JNI (1)
1、eclipse新建一个普通的java project,如下图:
TestNative.java的具体代码如下:
package org.hwq.main;
public class TestNative {
/**定义本地方法*/
public native void print();
/**main方法调用本地方法*/
public static void main(String[] args) {
new TestNative().print();
}
/**初始时候加载本地库文件,即是上面本地方法的c/c++实现*/
static{
System.loadLibrary("hello");
}
}
上面需要注意的是
System.loadLibrary("hello");这个。这里的
“hello”就是需要加载的库的名字。这里会面要提及,关键注意。只有加载了库文件,
print()这个本地方法才能使用。
2、生成.h头文件
上面通过eclipse编译后,启动cmd,进入该项目的bin目录下面。我这里是:
D:\workspace1\testNative\bin,如下图:
这里要注意,javah是jdk自带的工具类,能根据现有的类,生成相应的.h头文件。这里后面要跟上类的全名,即包名+类名。
这时候就可以通过文件夹,查看
D:\workspace1\testNative\bin下的文件。如下图:
我们可以看看这个生成头文件的内容:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_hwq_main_TestNative */
#ifndef _Included_org_hwq_main_TestNative
#define _Included_org_hwq_main_TestNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_hwq_main_TestNative
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_org_hwq_main_TestNative_print
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
看到头文件中声明了一个方法
JNIEXPORT void JNICALL Java_org_hwq_main_TestNative_print (JNIEnv *, jobject);,这个就是在java中对应
print()方法的本地实现方法名。
3、启动VC6.0编写对应c/c++源文件
启动VC6.0,
“新建”—工程—Win32 Dynamic-Link Libraay,填写工程名,这里就要填写上面提到的库名
“hello”
工程建完后,将上面生成的
org_hwq_main_TestNative.h文件复制到该项目目录下面。我这里是
C:\Program Files\Microsoft Visual Studio\MyProjects\hello。如下图:
到VC6.0界面,将刚复制过来的头文件添加到项目头文件中。如下:
接下来,编写本地方法实现的c/c++源文件。如下图:
TestNative.cpp文件内容如下:
#include <jni.h>
#include <stdio.h>
#include "org_hwq_main_TestNative.h"
JNIEXPORT void JNICALL Java_org_hwq_main_TestNative_print
(JNIEnv *env, jobject obj)
{
printf("hello wolrd,the first jni application!!!");
return;
}
这个cpp文件中,需要导入jni.h头文件,还有我们生成的头文件
org_hwq_main_TestNative.h,然后方法就是
org_hwq_main_TestNative.h头文件中声明的那个。编写方法体,OK完毕。编译build就完事。
这是后我们到这个
C++项目下的Debug目录下面能看到一个
hello.dll的文件。将这个文件复制到
java项目的bin目录下,和生成的头文件在一个目录。
这时候就能运行了,我们先到cmd中运行试试。
运行成功。
我们在到eclipse中去运行试试看。
Exception in thread "main" java.lang.UnsatisfiedLinkError: no hello in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.hwq.main.TestNative.<clinit>(TestNative.java:12)
出现这个错误,没找到库文件hello。上面我们在cmd中运行成功了。为什么在eclipse中不能运行?这里的问题,我也不是太了解。不过有个解决方案。在系统的环境变量path中添加该java项目bin目录。这里是
D:\workspace1\testNative\bin
添加成功,确定,重启eclipse,再次运行就ok了。
如果想图方便,可以直接将生成的.dll动态库文件放到system32文件夹下去,直接就能运行。

- 大小: 6.5 KB

- 大小: 10.9 KB

- 大小: 27.9 KB

- 大小: 31.5 KB

- 大小: 29.1 KB

- 大小: 6 KB

- 大小: 4.2 KB

- 大小: 17.9 KB

- 大小: 9 KB

- 大小: 36.4 KB

- 大小: 25.6 KB
分享到:
相关推荐
在特定版本6.0.25中,它为开发人员提供了稳定且高效的支持。这个库对于C++开发者来说至关重要,因为它是编译和运行C++程序的基础。当我们遇到“找不到文件”的问题时,特别是在ARM架构的服务器上,可能就是libstdc++...
在本文中,我们将深入探讨如何在Eclipse集成开发环境中,结合MinGW编译器来构建Java JNI(Java Native Interface)项目。JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互,使得开发者可以利用C/...
最近在研究JNI,网上说的编译JNI的方法多种多样,挑也挑花了眼,不过我不太喜欢繁琐的东西,感觉能一次搞定的最好。后来结合网上说的让后加上自己摸索,终于可以用eclipse + NDK + Cygwin编译出so文件并且能够直接...
1.) 在项目根目录下创建jni目录,下面是要放进去的第一个文件Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main_jni #LOCAL_CFLAGS := LOCAL_SRC_FILES := main.cpp #LOCAL_...
1. **下载Eclipse**:可以从Eclipse的官方镜像站点下载适用于Windows的Eclipse 3.3.2版本或其他版本。 2. **运行Eclipse**:双击下载的`.exe`文件,Eclipse会自动检测并配置JDK。选择你的工作空间(workspace)路径...
本示例是关于如何在Eclipse开发环境中结合Microsoft Visual Studio 2010来实现JNI程序开发的一个详细教程。 首先,我们需要理解JNI的核心概念。JNI允许Java应用程序调用本地(非Java)代码,比如C++,并反之亦然。...
JNI 开发 Eclipse 相关开发环境的搭建 JNI(Java Native Interface)是 Java 调用本地代码的接口,广泛应用于 Android 开发中。为了更好地开发 JNI 项目,需要搭建一个合适的开发环境。本文将指导读者如何在 ...
中科院分词系统+ICTCLAS2011+JNI版(Java语言)源代码学习
1. ADT(Android Development Tools):ADT是Eclipse的一个插件,用于帮助开发者在Eclipse环境中开发Android应用程序。它包括了对Android应用项目的基本管理、调试、构建等工具的支持。 2. NDK(Native Development...
搭建Android+Eclipse+NDK+cygwin开发环境是Windows平台下进行Android原生代码(C/C++)开发的基础步骤。以下是对各个步骤的详细说明: 1. **安装JDK**: JDK (Java Development Kit) 是Java编程语言的开发环境,对于...
Android 6.0 平台上使用Android Studio (AS) 进行JNI开发是一个常见的实践,JNI(Java Native Interface)允许Java代码与其他编程语言(如C++)进行交互,以利用其性能优势或调用特定库。这个实验将带你了解如何在...
如何使用jni调用java方法完成java回调c++调用java等
本文将详细介绍在Eclipse环境下进行Android JNI开发的基本知识点,包括环境配置、开发流程、常见问题以及一个示例项目。 一、环境配置 1. 安装Eclipse IDE:首先,你需要一个安装了ADT(Android Developer Tools)...
在Windows下使用Eclipse及Sequoyah开发Android JNI项目工程
【Eclipse+CDT+GDB调试Android NDK程序】是一种在Eclipse集成开发环境中,利用CDT(C/C++ Development Tooling)和GDB(GNU Debugger)进行原生代码调试的技术。Android NDK允许开发者在Android应用中使用C或C++编写...
1. **JNI基础知识**: - JNI是Java平台的一部分,它定义了Java虚拟机(JVM)和本地代码之间的接口。这使得开发者可以在Java应用程序中使用C/C++代码,以实现高效计算或利用特定平台的功能。 - JNI提供了各种函数,...
串口通信java包
1. **创建项目**:在Eclipse中新建一个Android项目,选择“Create Project from Existing Source”,源代码路径设置为`/home/shaodx/android/android-ndk-r7/samples/hello-jni`。 - Sdk Target选择2.2(其他版本...
### Eclipse里Android JNI的开发方法 #### NDK开发环境安装 **Native Development Kit (NDK)** 是由Google提供的工具集,旨在支持开发者使用C或C++编写原生代码,并能够将其与Java应用相结合,最终打包成APK。通过...