`

eclipse+VC6.0开发JNI (1)

    博客分类:
  • JNI
 
阅读更多
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
分享到:
评论

相关推荐

    libstdc++6.0.25

    在特定版本6.0.25中,它为开发人员提供了稳定且高效的支持。这个库对于C++开发者来说至关重要,因为它是编译和运行C++程序的基础。当我们遇到“找不到文件”的问题时,特别是在ARM架构的服务器上,可能就是libstdc++...

    简洁使用 eclipse+mingw 环境编译 java jni

    在本文中,我们将深入探讨如何在Eclipse集成开发环境中,结合MinGW编译器来构建Java JNI(Java Native Interface)项目。JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互,使得开发者可以利用C/...

    android eclipse+NDK+Cygwin编译JNI 教程

    最近在研究JNI,网上说的编译JNI的方法多种多样,挑也挑花了眼,不过我不太喜欢繁琐的东西,感觉能一次搞定的最好。后来结合网上说的让后加上自己摸索,终于可以用eclipse + NDK + Cygwin编译出so文件并且能够直接...

    windows下 eclipse+ndk编译及使用jni示例

    1.) 在项目根目录下创建jni目录,下面是要放进去的第一个文件Android.mk LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := main_jni #LOCAL_CFLAGS := LOCAL_SRC_FILES := main.cpp #LOCAL_...

    Windows下JDK1.6.0+Tomcat6.0的安装配置

    1. **下载Eclipse**:可以从Eclipse的官方镜像站点下载适用于Windows的Eclipse 3.3.2版本或其他版本。 2. **运行Eclipse**:双击下载的`.exe`文件,Eclipse会自动检测并配置JDK。选择你的工作空间(workspace)路径...

    jni程序开发简单示例和说明(eclipse + Microsoft Visual Studio 2010).zip

    本示例是关于如何在Eclipse开发环境中结合Microsoft Visual Studio 2010来实现JNI程序开发的一个详细教程。 首先,我们需要理解JNI的核心概念。JNI允许Java应用程序调用本地(非Java)代码,比如C++,并反之亦然。...

    JNI开发 eclipse相关开发环境的搭建

    JNI 开发 Eclipse 相关开发环境的搭建 JNI(Java Native Interface)是 Java 调用本地代码的接口,广泛应用于 Android 开发中。为了更好地开发 JNI 项目,需要搭建一个合适的开发环境。本文将指导读者如何在 ...

    中科院分词系统+ICTCLAS2011+JNI版(Java语言)源代码学习

    中科院分词系统+ICTCLAS2011+JNI版(Java语言)源代码学习

    Android+Eclipse+NDK+cygwin开发环境的搭建.doc

    搭建Android+Eclipse+NDK+cygwin开发环境是Windows平台下进行Android原生代码(C/C++)开发的基础步骤。以下是对各个步骤的详细说明: 1. **安装JDK**: JDK (Java Development Kit) 是Java编程语言的开发环境,对于...

    Android 6.0 AS平台 JNI 实验

    Android 6.0 平台上使用Android Studio (AS) 进行JNI开发是一个常见的实践,JNI(Java Native Interface)允许Java代码与其他编程语言(如C++)进行交互,以利用其性能优势或调用特定库。这个实验将带你了解如何在...

    在qtC++Android使用jni调用示例

    如何使用jni调用java方法完成java回调c++调用java等

    eclipse 环境下关于android jni开发

    本文将详细介绍在Eclipse环境下进行Android JNI开发的基本知识点,包括环境配置、开发流程、常见问题以及一个示例项目。 一、环境配置 1. 安装Eclipse IDE:首先,你需要一个安装了ADT(Android Developer Tools)...

    在Windows下使用Eclipse及Sequoyah开发Android JNI项目工程

    在Windows下使用Eclipse及Sequoyah开发Android JNI项目工程

    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 + vs2013 编写第一个JNI HelloWorld

    1. **JNI基础知识**: - JNI是Java平台的一部分,它定义了Java虚拟机(JVM)和本地代码之间的接口。这使得开发者可以在Java应用程序中使用C/C++代码,以实现高效计算或利用特定平台的功能。 - JNI提供了各种函数,...

    QTC++Android使用JNI调用java方法实现串口通信

    串口通信java包

    Eclipse里Android JNI的开发方法

    ### Eclipse里Android JNI的开发方法 #### NDK开发环境安装 **Native Development Kit (NDK)** 是由Google提供的工具集,旨在支持开发者使用C或C++编写原生代码,并能够将其与Java应用相结合,最终打包成APK。通过...

Global site tag (gtag.js) - Google Analytics