`

相关C方法

    博客分类:
  • jni
 
阅读更多

C调用java

jclass TestProvider;
jobject mTestProvider;
jmethodID showtoast;
jmethodID sayHello;
JNIEXPORT void JNICALL Java_com_beats_music_musicbeats_NdkTest_setTemp
        (JNIEnv * env, jobject jobj, jstring jstr){
//   1. C 中映射 类
    TestProvider=(*env)->FindClass(env,"com/beats/music/musicbeats/active/ToastUtil");
//   2.C中新建对象
    jmethodID construction_id = (*env)->GetMethodID(env, TestProvider,"<init>", "()V");
    mTestProvider = (*env)->NewObject(env, TestProvider,construction_id);
//   3.C中映射方法
//    静态:
    showtoast = (*env)->GetStaticMethodID(env, TestProvider, "showtost","(Ljava/lang/String;)V");
//    非静态:
//    sayHello = (*jniEnv)->GetMethodID(jniEnv, TestProvider, "sayHello","(Ljava/lang/String;)V");
    //4.调用
//    调用静态:
    (*env)->CallStaticVoidMethod(env,TestProvider,showtoast,jstr);
//    非静态:
//    (*jniEnv)->CallVoidMethod(jniEnv, mTestProvider, sayHello,jstrMSG);
};

 char*转jstring

将char*转成jstring

/**
*  jni中有对应GetStringChar方法
 * 把一个jstring转换成一个c语言的char* 类型.
 */
char* _JString2CStr(JNIEnv* env, jstring jstr) {
	 char* rtn = NULL;
	 jclass clsstring = (*env)->FindClass(env, "java/lang/String");
	 jstring strencode = (*env)->NewStringUTF(env,"GB2312");
	 jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes", "(Ljava/lang/String;)[B");
	 jbyteArray barr = (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid, strencode); // String .getByte("GB2312");
	 jsize alen = (*env)->GetArrayLength(env, barr);
	 jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);
	 if(alen > 0) {
		rtn = (char*)malloc(alen+1); //"\0"
		memcpy(rtn, ba, alen);
		rtn[alen]=0;
	 }
	 (*env)->ReleaseByteArrayElements(env, barr, ba,0);
	 return rtn;
}

 

分享到:
评论

相关推荐

    C语言多文件编程方法例程2——外部变量.docx

    C语言多文件编程方法例程2——外部变量 C语言多文件编程是指在一个项目中使用多个C文件来编写代码,以便更好地组织和管理代码。这种编程方法可以使代码更易于维护和更新。下面是C语言多文件编程方法例程2的详细知识...

    C语言中将数字转换为字符串的方法

    下面详细介绍这些方法及其相关知识点。 1. itoa()函数 itoa()是一个非标准的C函数,它属于某些C编译器提供的扩展库,通常在stdlib.h头文件中声明。itoa()函数可以将整型数字转换成字符串,它的原型如下: ```c ...

    C语言精确延时方法

    这种方法简单易懂,但延时时间与处理器速度、编译器优化等因素紧密相关,因此精度较低,不适用于对延时要求高的场合。 2. **基于硬件定时器的延时** 在嵌入式系统中,通常有硬件定时器资源,它们可以周期性地触发...

    计算方法(计算机专业课PPT及代码C语言实现和试题)

    本资料包包含计算方法的PPT教程、C语言实现的算法代码以及相关的考试试题,是学习和复习该课程的宝贵资源。 1. 计算方法PPT教程: PPT教程通常会涵盖以下主题: - 数值线性代数:矩阵求解、特征值计算、LU分解等...

    C语言实现直角坐标转换为极坐标的方法

    本文介绍了C语言实现直角坐标转换为极坐标的方法,该方法涉及C语言进行三角函数与数值运算相关操作技巧。通过本文,我们可以了解到如何使用C语言来实现直角坐标到极坐标的转换,并掌握相关的数学原理和编程技巧。 ...

    数值计算方法C语言代码(林成森版)

    《数值计算方法C语言代码(林成森版)》是一个包含C语言实现的数值计算算法集合,主要对应科学出版社出版的《数值计算方法》一书(林成森著)。这本书是许多计算机科学与工程学学生以及相关专业人士学习数值计算的...

    有关C语言教学方法优化的探讨.pdf

    在当前信息化社会中,C语言的教学方法需要不断优化以适应不断变化的学习环境和需求。本文将探讨如何通过创新的教学策略和实践来提升C语言的教学效果。 首先,理论与实践相结合是优化C语言教学的关键。学生不仅需要...

    C语言接口与实现 pdf 免费

    它倡导了一种基于接口的设计理念,并提供了24个C语言接口的详细描述和实现方法,这些接口的设计与实现是相互独立的,从而形成了一种有效的基于接口的设计途径,用于构建可重用的API。 在软件开发中,可重用性是一个...

    由全国软件大赛成绩看C语言教学方法.pdf

    "由全国软件大赛成绩看C语言教学方法.pdf" 作为一名IT行业大师,我将根据给定的文件信息,生成相关的知识点。 首先,让我们从标题和描述开始。标题"由全国软件大赛成绩看C语言教学方法.pdf"表明这篇文章的主要内容...

    二叉树4种遍历方法的C语言实现

    在`BinaryTree.c`和`Binary.h`这两个文件中,`BinaryTree.c`很可能是实现这些遍历方法的源代码,而`Binary.h`则可能包含了二叉树节点的定义和相关函数声明。在`BinaryTree.c`中,你可以找到如下的函数定义: - `...

    计算方法课件与C语言编程

    《计算方法课件与C语言编程》这门课程的核心内容主要涵盖了两个方面:计算方法和C语言编程。计算方法是应用数学的一个重要分支,它研究如何利用计算机来解决实际问题,特别是那些涉及到数学模型的问题。C语言编程则...

    c语言求特征值特征向量.zip

    总之,"c语言求特征值特征向量.zip"项目提供了C语言实现的矩阵特征值和特征向量求解器,利用了QR分解这一数值计算方法。这个项目不仅是一个实用的工具,也是学习和研究数值线性代数、C语言编程和软件工程实践的好...

    C语言库函数程序转换方法

    该转换方法不仅解决了C语言与Java语言之间数据类型不一致的问题,还确保了转换后的代码能够保持与原始C代码相同的功能。通过这种方法,可以有效地提高代码转换的质量和效率,减少手动调整的工作量,从而加快遗产代码...

    C语言实现COM组件

    在C语言中,接口通常是通过结构体和指针实现的,结构体定义了方法的原型,而指针则用于调用这些方法。例如: ```c typedef struct _IExample { HRESULT (__stdcall *QueryInterface)(void* this_ptr, REFIID riid,...

    自相关c语言代码,简单实用

    标签“函数自相关”表明这个代码实现可能包含了自相关函数计算的通用方法,可能适用于各种信号处理场景,如检测周期性、估计信号的长度或去除噪声等。在实际应用中,这样的函数可以用于分析音频信号、金融时间序列、...

    摸索C语言的方法.pdf

    数学与编程紧密相关,特别是算法的学习,它能帮助学生更好地理解和掌握C语言。即使是初学者,在掌握了基本语法之后,也应该尝试理解并运用算法来提高程序的效率。 此外,文章还强调了实践的重要性。学生应该通过...

    有关C语言的课件资料,PPT形式

    C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言。它的语法简洁明了,可移植性高,是学习计算机...在实践中不断练习,将理论知识转化为实际编程能力,是成为合格的C程序员的关键步骤。

    turboc2 C语言相关程序

    这个标题所指的“turboc2 C语言相关程序”是一系列利用T TurboC2编写的C语言程序,它们能够帮助用户在特定的环境下运行和学习C语言。 TurboC2是 TurboC 的第二个主要版本,它在当时的个人计算机上广泛使用,尤其是...

    C语言精彩案例下载!例子是一种学习方法!

    在提供的"**C语言案例(TC下).chm**"文件中,你可以找到各种基于 Turbo C (TC) 编译器的C语言实例,这将帮助你实践上述知识点。通过运行和分析这些例子,你可以更好地理解C语言的工作原理,从而提升编程技能。例如...

Global site tag (gtag.js) - Google Analytics