日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

jni c运行java字符串,通过JNI将C ++字符串发送到Java

發布時間:2024/2/28 java 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jni c运行java字符串,通过JNI将C ++字符串发送到Java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我正在構建Android應用程序的項目的C

方面。我需要一些信息(通過字符串和字符串數組)傳遞給Java應用程序(通過JNI)。我以前從未做過,相反方向的人沒有C的經驗,并承認他們不能真正提供幫助。

我確實找到了以下代碼(從這里開始)

#include

#include "ArrayHandler.h"

JNIEXPORT jobjectArray JNICALL Java_ArrayHandler_returnArray (JNIEnv *env, jobject jobj){

jobjectArray ret;

int i;

char *message[5]= {"first","second","third","fourth","fifth"};

ret= (jobjectArray)env->NewObjectArray(5,env->FindClass("java/lang/String"),env->NewStringUTF(""));

for(i=0;i<5;i++) {

env->SetObjectArrayElement(ret,i,env->NewStringUTF(message[i]));

}

return(ret);

}

但這對我來說毫無意義。通常,我不確定如何將其合并到程序的C

++端,而且我無法確切了解其工作原理。代碼是否在執行該return(ret);行時發出消息?還是在for循環中執行該行期間?

理想情況下,我希望將字符串/字符串數組“實時”發送到行中,而不是在函數末尾發送,這樣我就不必合并新函數。

我找到的代碼可以為我想要的工作(經過一些修改)嗎?我正在尋找的東西甚至可能嗎?如果是這樣,我該怎么辦?

編輯/更新: 花了整整一天時間研究JNI和術語,我想我未能正確傳達我在這里想要實現的目標以及對@jogabonito的回答/答復的評論。

話雖如此。我正在處理的代碼是針對IM客戶端的,該客戶端需要將消息和狀態更新推送到Android

Java應用程序(通過JNI),以便Android應用程序不會輪詢更新。我設法學習了如何設置Java代碼的函數來調用requrest信息。但是,我不知道如何在傳入新消息或狀態信息(Jabber節字符串)時將其推送到Java代碼。我在如何執行此操作時所見過的所有代碼(例如,參見下文)似乎都需要從Java代碼中獲取信息(env,類,methodid等)。

對于不是調用該函數的java代碼而是我的c ++代碼的人來說,這怎么可能是不可能的。任何解釋/幫助將不勝感激。

#include

#include

#include

jstring Java_the_package_MainActivity_getJniString( JNIEnv* env, jobject obj){

jstring jstr = (*env)->NewStringUTF(env, "This comes from jni.");

jclass clazz = (*env)->FindClass(env, "com/inceptix/android/t3d/MainActivity");

jmethodID messageMe = (*env)->GetMethodID(env, clazz, "messageMe", "(Ljava/lang/String;)Ljava/lang/String;");

jobject result = (*env)->CallObjectMethod(env, obj, messageMe, jstr);

const char* str = (*env)->GetStringUTFChars(env,(jstring) result, NULL); // should be released but what a heck, it's a tutorial :)

printf("%s\n", str);

return (*env)->NewStringUTF(env, str);

}

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的jni c运行java字符串,通过JNI将C ++字符串发送到Java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。