自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 资源 (5)
  • 收藏
  • 关注

转载 Unable to execute dex: Java heap space 解决方案(如何为eclipse.int 添加内存)

今天,在编译一个大工程的时候遇到了问题     Unable to execute dex: Java heap space      上网找了一下,有两种解决方案:     1. eclipse.int 添加内存      2. 导入工程的jar通过add User Library方式导入       右键工程->build path->add Library->user

2012-04-27 10:32:52 393

原创 java枚举

一直以来,区分java和c的时候,总是会提到,java里面没有枚举的概念,久而久之,这就成了事实。现在虽然java里面有了枚举,但是一直很抵触java枚举的使用。还是从思想上觉得java没有枚举类型。用之前的方法,整形常量集,这个不好限制范围。这个确实是个弊病。并且不好将使用之处和这个整形常量集联系起来

2012-04-26 08:59:14 252

原创 jni生成h文件

在frameworks/base写完一个模块后,要写一个新模块的时候,发现怎么javah,怎么javac,都不会用了,当时是怎么编译的?新建模块名称test,package android.aa.bb;文件放在frameworks/base/test/java/android/aa/bb下1、在frameworks/base 路径下执行mm,在新增的模块里面,没有相应的java对应cl

2012-04-25 16:15:53 638 1

原创 c回调数据给java实现

1、测试方法1 在jni的java层,创建一个要传回的对象,并记录在全局变量里面。在c回调里面获取这个对象,并修改值。void callback(){             JNIEnv *env=NULL;                      pVm->AttachCurrentThread(&env,NULL);

2012-04-19 13:24:20 790

原创 jni c本地代码回调java (多线程中,创建java对象时报空指针)未解决

需求:在c回调函数里面,创建一个java对象,并将值传递给java应用使用。void callback(){             JNIEnv *env=NULL;                 jobject searchResultObj;                      pVm->AttachCurrentThread(&env,NULL);

2012-04-18 13:41:38 2049 1

原创 The constructor SearchParam() is not visible

这是因为构造函数没有设置成public的导致的。

2012-04-16 14:22:33 2346

转载 chap 20:使用 Java Native Interface 的最佳实践2

2.正确性缺陷5 大 JNI正确性缺陷包括:·  使用错误的JNIEnv·  未检测异常·  未检测返回值·  未正确使用数组方法·  未正确使用全局引用2.1使用错误的JNIEnv执行本机代码的线程使用JNIEnv发起 JNI方法调用。但是,JNIEnv并不是仅仅用于分派所请求的方法。JNI规范规定每个JNIEnv对于线程来说都是本地的。JVM可以依赖于这一假

2012-04-16 08:48:19 424

转载 chap 20:使用 Java Native Interface 的最佳实践

JNI 的发展JNI 自从 JDK 1.1 发行版以来一直是 Java 平台的一部分,并且在 JDK 1.2 发行版中得到了扩展。JDK 1.0 发行版包含一个早期的本机方法接口,但是未明确分隔本机代码和Java 代码。在这个接口中,本机代码可以直接进入 JVM 结构,因此无法跨 JVM 实现、平台或者甚至各种 JDK 版本进行移植。使用 JDK 1.0 模型升级含有大量本机代码的应用

2012-04-16 08:48:03 331

转载 chap 20:使用 Java Native Interface 的最佳实践

JNI 的发展JNI 自从 JDK 1.1发行版以来一直是 Java平台的一部分,并且在 JDK 1.2发行版中得到了扩展。JDK 1.0发行版包含一个早期的本机方法接口,但是未明确分隔本机代码和 Java代码。在这个接口中,本机代码可以直接进入 JVM结构,因此无法跨 JVM实现、平台或者甚至各种 JDK版本进行移植。使用 JDK 1.0模型升级含有大量本机代码的应用程序,以及开

2012-04-16 08:47:49 422

转载 chap 19:JNI限制(多线程)

JNI限制:There are certain constraints that you must keep in mind when writing nativemethods that are to run in a multithreaded environment. By understanding and programming within these constraints, y

2012-04-16 08:47:40 1009

转载 chap 18:JNI在多线程中的应用

引文地址:http://blog.csdn.net/hust_liuX/archive/2006/12/25/1460486.aspx我在这里将文章整理了一下,重新修改了部分描述和增加了一些重要的说明事项。修改文如下:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回,同时把JNI接口的指针JNIEnv *env(虚拟

2012-04-16 08:47:30 560

转载 chap 17:当JNI遇到多线程--java对象如何被C++中的多个线程访问?

java中要访问C++代码时,使用JNI是唯一选择.然而,在多线程的情况下,可能出现以下问题:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回.同时把JNI接口的指针JNIEnv *env,和jobject obj保存在DLL中的变量里.一段时间后,DLL中的消息接收线程接收到服务器发来的消息,并试图通过保存过的en

2012-04-16 08:47:19 1406

转载 Chap16:JNI的c代码中,另外一个线程获取 JNIEnv

JNI 中,JNIEnv*指针变量只对当前线程有效。如果是其他的线程,需要先获得 JVM*指针,然后再获得当前线程的JNIEnv*指针。部分示例代码为:/** Invoker.cpp, Invoker.java */#include #include #include "Invoker.h"#include "invoker_include.h"JavaVM *

2012-04-16 08:47:09 1110

转载 Chap15:基本JNI调用技术(c/c++与java互调)

一.C/C++调用Java在C/C++中调用Java的方法一般分为五个步骤:初始化虚拟机、获取类、创建类对象、调用方法和退出虚拟机。1. 初始化虚拟机代码如下:    JNIEnv *env;    JavaVM *jvm;    JavaVMInitArgs vm_args;    JavaVMOption options[3];    int res;

2012-04-16 08:46:53 518

转载 Chap14:如何在C/C++中调用Java

Java跨平台的特性使Java越来越受开发人员的欢迎,但也往往会听到不少的抱怨:用Java开发的图形用户窗口界面每次在启动的时候都会跳出一个控制台窗口,这个控制台窗口让本来非常棒的界面失色不少。怎么能够让通过Java开发的GUI程序不弹出Java的控制台窗口呢?其实现在很多流行的开发环境例如JBuilder、Eclipse都是使用纯Java开发的集成环境。这些集成环境启动的时候并不会打开一个命令窗

2012-04-13 12:55:19 491

转载 Chap13:JNI编程系列之高级篇

在本篇中,将会涉及关于JNI编程更深入的话题,包括:在native方法中访问Java类的域和方法,将Java中自定义的类作为参数和返回值传递等等。了解这些内容,将会对JNI编程有更深入的理解,写出的程序也更清晰,易用性更好。1. 在一般的Java类中定义native方法在前两篇的例子中,都是将native方法放在main方法的Java类中,实际上,完全可以在任何类中定义native

2012-04-13 12:05:54 325

转载 Chap12:JNI编程系列之中级篇(上) 本篇将介绍在JNI编程中如何传递参数和返回值。

首先要强调的是,native方法不但可以传递Java的基本类型做参数,还可以传递更复杂的类型,比如String,数组,甚至自定义的类。这一切都可以在jni.h中找到答案。 1. Java基本类型的传递 用过Java的人都知道,Java中的基本类型包括boolean,byte,char,short,int,long,float,double这样几种,如果你用这几种类型做native方

2012-04-13 11:05:52 405

转载 Chap11:JNI编程系列之基础篇

JNI编程系列之基础篇 最近干一个活需要从Java调用C++编译的动态链接库,研究了一下JNI,现在将网上搜罗的文档和自己的体会贡献出来。 JNI的做法是:通过在方法前加上关键字native来识别本地方法,然后用本地语言(如C,C++)来实现该方法,并编译成动态链接库,在Java的类中调用该动态链接库,然后就可以像使用Java自己的方法一样使用native方法了。这样做的好处是既具

2012-04-13 11:04:07 367

转载 Chap10:在 Windows 中实现 Java 本地方法

本文为在 32位 Windows 平台上实现 Java 本地方法提供了实用的示例、步骤和准则。这些示例包括传递和返回常用的数据类型。本文中的示例使用 Sun Microsystems公司创建的 JavaDevelopmentKit (JDK)版本 1.1.6 和 Java本地接口 (JNI)规范。用 C语言编写的本地代码是用 MicrosoftVisualC++编译器编译生成的。简介本

2012-04-13 11:02:00 356

转载 Chap9:如何编写jni方法(转载)

一、概述:在这篇文章中将会简单介绍如何编制一些简单的JNI 方法。我们都知道JNI方法可以帮助我们调用用C/c++编写的函数,这样如果一项工作已经用C /c++语言实现的话,我们就可以不用花很大的力气再用JAVA语言对这一工作进行再实现,只要编制相应的JNI函数,就可以轻松实现JAVA语言对C /c++函数的调用,从而大大减轻程序开发人员的工作量。 在这个项目中,我

2012-04-13 10:51:41 390

转载 Chap5:使用JNI技术实现java程序调用第三方dll(c/c++)文件的功能

JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编写代码去管理设备端口,而且有一些设备厂商提供的硬件接口已经经过一定的封装和处理,不能直接使用java程序通过端口和设备通信,这种情况下就得考虑使用java程序去调用比较擅长同系统打交道的第三方程序,从

2012-04-13 10:23:55 1059

转载 Chap8:如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组

近遇到一个问题,请各位帮忙解决下:    如何将java传递过来的jbyteArray转换成C/C++中的BYTE数组?BYTE为unsigned char类型     这两个我理解应该是相同的吧,强制类型转换好像不启作用,应该如何转换呢?该问题已经关闭:问题已解决,之前代码有问题 jbyte * arrayBody= env->GetByteArrayElem

2012-04-13 10:22:45 998

转载 Chap7:Jni中C++和Java的参数传递

如何使用JNI的一些基本方法和过程在网上多如牛毛,如果你对Jni不甚了解,不知道Jni是做什么的,如何建立一个基本的jni程序,或许可以参考下面下面这些文章: 利用VC++6.0实现JNI的最简单的例子>入门教程之HelloWorld篇>这些资料的例子中,大多数只是输入一些简单的参数,获取没有参数。而在实际的使用过程中,往往需要对参数进行处理转换。才可以被C/C++程序识别。比

2012-04-13 10:20:42 416

转载 Chap6: JNI传递返回值

作为主调方的Java源程序TestJNI.java如下。代码清单15-4在Linux平台上调用C函数的例程——TestJNI.java1.      public class TestJNI2.       {3.         static4.         {5.           System.loadLibrary("testjni");//载入静态库,t

2012-04-13 09:43:21 536

转载 Chap5:jni教程

本教程摘自IBM DW,如有转载,请声明!Java 本机接口(Java Native Interface (JNI))是一个本机编程接口,它是 Java 软件开发工具箱(Java SoftwareDevelopment Kit (SDK))的一部分。 JNI 允许 Java代码使用以其它语言(譬如 C和 C++)编写的代码和代码库。Invocation API(JNI

2012-04-13 09:38:40 556

转载 Chap 4:用javah产生一个.h文件

Java不是完善的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接造访到操作体系底层(如系统硬件等),为此 Java使用native法子来扩大Java程序的功效。  可以将native法子比作Java程序同C程序的接口,其实现步骤:  1、在Java中声明native()方式,然后编译;  2、用javah发生一个.h文件;  3、写一个

2012-04-13 09:34:40 345

转载 Chap 3:javah命令帮助信息

D:\Program Files\Java\jdk1.6.0_12\bin>javah用法:javah [选项] 类> 其中 [选项]包括:        -help                输出此帮助消息并退出       -classpath 路径>    用于装入类的路径       -bootclasspath 路径>用于装入引导类的路径

2012-04-13 09:32:47 275

转载 Jni函数调用Chap2:JNI-百度百科

定义JNI是Java NativeInterface的缩写,中文为JAVA本地调用。从Java1.1开始,Java NativeInterface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。  使用java与本地已编译的代

2012-04-13 09:31:16 357

转载 Jni函数调用 Chap1:JNI完全手册

Chap1:JNI完全手册  最近在公司里做了一个手机的项目,需要JAVA程序在发送短信的时候和第三方的短信服务器连接。短信接口是用C++写的。琢磨了三天,大致搞懂了JNI的主体部分。先将心得整理,希望各位朋友少走弯路。  首先引用一篇文章,介绍一个简单的JNI的调用的过程。JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少

2012-04-13 09:22:40 328

原创 如何在jni中维护一个java对象

GlobalRef: 当你需要在 JNI 层维护一个 Java 对象的引用,而避免该对象被垃圾回收时, 使用 NewGlobalRef 告诉VM 不要回收此对象,当本地代码最终结束该对象的引用时,用 DeleteGlobalRef 释放之。

2012-04-12 16:13:03 502 1

原创 jni如何通过回调传对象

实现接口把对象当做接口的参数public interface callback{public abstract int getObject(testObj obj);}对象类:public class testObj{ int a;int b;testObj(int a,int b){this.a=a;this.b=b;}}c实现

2012-04-12 15:48:32 740

转载 深入浅出jni

Java虚拟机(Java Virtual Machine) 简称JVM Java虚拟机是一个想象中的机器,在实际的计算机上通过软件模拟来实现。Java虚拟机有自己想象中的硬件,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM的设计目标是提供一个基于抽象规格描述的计算机模型, JVM对其实现的某些方面给出了具体的定义,特别是对Java可执行代码,即字节码(Bytecode)的格式给出了

2012-04-12 13:54:27 1366

转载 JNI 常用API

JNI 常用API 利用JNIEnv自变量,程序员可访问一系列函数。这些函数可划分为下述类别:■获取版本信息■进行类和对象操作■控制对Java对象的全局和局部引用■访问实例字段和静态字段■调用实例方法和静态方法■执行字串和数组操作■产生和控制Java异常 获取版本信息jint GetVersion(JN

2012-04-12 13:29:37 731

转载 jni和c/c++多线程的处理

http://reeboo.iteye.com/blog/346642java中要访问C++代码时, 使用JNI是唯一选择. 然而,在多线程的情况下, 可能出现以下问题:问题描述:一个java对象通过JNI调用DLL中一个send()函数向服务器发送消息,不等服务器消息到来就立即返回.同时把JNI接口的指针JNIEnv *env,和jobject obj保存在DLL中的

2012-04-12 13:16:27 457

原创 关于jni里面回调的使用

将已经实现的驱动移植到android平台后,需要将通过jni将接口封装。在这个过程中,有的c语言接口是通过回调的方式回传数据的。相当于java是被动调用的。开始的时候,想着使用intent 广播实现,后来想想不对,这是java层的东西,不适用于jni的封装。后来使用interface,接口实现了jni层的回调的封装。public interface testCallBack{pub

2012-04-12 12:15:33 518

转载 java interface使用说明

l  在interface中所有的方法都是public  abstract的,即使你没有申明它是public abstract的.  l  在interface中所有的数据成员都是public  static  final的,即使你没有申明.但不能是blank final  在编译时候确定的 在Java中,interface的地位和class是一样的 实现int

2012-04-12 10:52:20 358

Oracle UNIX安装手册.pdf

Oracle 8 UNIX安装手册.本书详细描述了如何按照oracle的步骤,可以学习一下

2009-05-13

Effective.STL中文.CHM

It came without ribbons! It came without tags! It came without packages, boxes or bags! ——Dr. Seuss, How the Grinch Stole Christmas!, Random House, 1957 我第一次写关于Standard Template Library的东西是在1995年,那时,我决定把More Effective C++的最后一个条款写成一个STL的简要概览。我早该更好地了解STL。不久以后,我开始收到一些mail,问我什么时候写Effective STL。 我把这个想法忍耐了几年。一开始,我对STL不够熟悉,所以不能给出关于它的建议。但随着时间的推移,我的STL的经验丰富了,主要问题出在其他方面。当一个程序库的在效率和可扩展性设计上表现出突破性的时候从来没有出过什么问题,但当开始使用STL时,这成了我不能预见的实际问题。迁移到一个几乎最简单的STL程序都成了一个挑战,不光是因为库的实现变化多端,而且因为现有的编译器对模板支持有好有坏。STL的教材很难得到,所以学习“用STL方式编程”很难;但即使跨越了这个障碍,找到正确易学的参考文档同样很困难。可能使人畏惧的是,即使最小的STL使用错误往往会导致一个编译器诊断的风暴——每一个错误都有上千个字长,而且大多涉及的类,函数或模板在令人厌恶的源代码中并没有被提及——几乎都是难以理解的。虽然我很钦佩STL和它背后的英雄们,但我还是觉得把STL推荐给在业的程序员并不合适。我不能肯定能有效率地使用STL。 然后我开始注意到一些让我感到惊奇的事情。尽管有很多小问题,尽管只有令人消沉的文档,尽管编译器的出错信息像无线电信号杂音,但仍然有很多我的咨询客户在使用STL。而且,他们不只是玩玩而已,他们竟然把STL用到了产品的代码中!这是一个革命。我知道STL表现出的是一流的设计,但程序员是不会喜欢用“必须忍耐轻微头痛,只有贫乏的文档和天书般的错误信息,但设计得很好”的程序库的。我了解到越来越多的专业程序员都认为即使一个实现得很不好的STL也比什么都没有好得多。 此外,我知道关于STL的境遇只会越来越好。程序库和编译器对(它们的)标准的兼容性会越来越好,更好的文档将会出现(它已经存在了——请见从297页开始的“参考书目”),而且编译器的诊断会渐渐改进(在极大程度上,我们仍然在等待,但条款49提供了怎样在其间应付的建议)。因此我决定插嘴,尽一份力量来支持STL运动的萌芽。这本书就是结果:改善使用C++ STL的50个有效做法。

2009-05-13

C与C++中的异常处理

异常与标准c的处理 c标准库异常处理机制

2009-05-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除