package com.ldq.d_string;
public class D_string {
static {
System.loadLibrary("Case");
}
public native String getCase(String string);
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
D_string d = new D_string();
String s = "heLLo";
System.out.println("before change: " + s);
System.out.println("after change: " + d.getCase(s));
}
}
- javah -jni com.ldq.d_string.D_string 生成文件 com_ldq_d_string_D_string.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_ldq_d_string_D_string */
#ifndef _Included_com_ldq_d_string_D_string
#define _Included_com_ldq_d_string_D_string
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_ldq_d_string_D_string
* Method: getCase
* Signature: (Ljava/lang/String;)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_ldq_d_1string_D_1string_getCase
(JNIEnv *, jobject, jstring);
#ifdef __cplusplus
}
#endif
#endif
#include <string.h>
#include "com_ldq_d_string_D_string.h"
JNIEXPORT jstring JNICALL Java_com_ldq_d_1string_D_1string_getCase (JNIEnv *env, jobject obj, jstring string)
{
const char *s=env->GetStringUTFChars(string,0);
char s1[16],s2[16];
strcpy(s1,s);
strcpy(s2,s);
strupr(s1);
strlwr(s2);
strcat(s1,"_");
strcat(s1,s2);
env->ReleaseStringUTFChars(string,s);
return env->NewStringUTF(s1);
}
- cl /LD Case.cpp 编译生成 Case.dll 文件
- 拷贝 Case.dll 文件到工程目录,运行 Java 程序
运行结果
before change: heLLo
after change: HELLO_hello
分享到:
相关推荐
3. **数据类型转换**:JNI提供了多种数据类型转换机制,如将Java的`int`、`double`等类型与C/C++的`jint`、`jdouble`对应,确保数据在Java和本地代码之间安全传递。 4. **对象引用管理**:JNI支持创建、访问和释放...
- 字符串处理:Java字符串在本地代码中通常表示为jstring,需要使用GetStringUTFChars()和ReleaseStringUTFChars()进行转换。 5. 数据类型转换: JNI提供了多种数据类型,用于在Java和本地代码之间转换数据,例如...
而BASE64编码是一种字符编码方式,用于将二进制数据转换成ASCII字符串,便于在网络传输或存储时使用。 以下是使用NDK实现RSA加解密的基本步骤: 1. 在C/C++层编写RSA加密和解密的函数,调用OpenSSL库提供的API,如`...
例如,`jclass`用于表示Java类,`jobject`可以代表任何对象,`jstring`则代表字符串。 6. **数据类型转换**:JNI提供了函数来在Java数据类型和C/C++数据类型之间进行转换,如`jbooleanToBoolean()`, `GetIntField()...
在处理数据类型时,如字符串(String),Java使用UTF-16编码,而C/C++通常使用UTF-8,因此在跨语言调用时需要进行编码转换,这增加了额外的开销。 此外,JNI调用还涉及到内存管理问题。由于Java有自动的垃圾收集...
9. **类型转换**:Java支持基本类型的自动类型转换(小类型到大类型)和强制类型转换(大类型到小类型,需要显式操作)。例如,将`String`转换为`int`可以使用`Integer.parseInt()`。 10. **命令行参数**:Java程序...
- 如果字符串不是有效的整数格式,将会抛出NumberFormatException异常。 1.1.4 Shorts1=1; s1=s1+1;有什么错? Shorts1=1; s1+=1;有什么错? - Shorts1=1; s1=s1+1;在shorts1=1时会自动提升为int类型,然后执行加1...
首先,编写一个C/C++接口,如`executeFFmpegCmd`,接收命令字符串作为参数,并调用系统调用来执行FFmpeg命令。 2. 构造压缩命令:视频压缩的命令通常包括选择合适的编码器、设置比特率、分辨率等参数。例如: ``` ...
Android应用中的资源文件包括图像、布局文件、字符串资源等。这些资源通常存储在应用的`res/`目录下。资源加载机制涉及以下几个关键方面: - **资源索引**:在Android应用打包过程中,所有资源都会被赋予一个唯一的...
� 丰富的数据业务,将导致数据流量的显著增加 。 � 手机来源增加,价格更为低廉。 对软件开发者的影响 � 因为 Android 移动软件平台抱持开放互通的观念,势必吸引不少自由软件的拥护者。 � 开发方向有三个重点 :...