草庐IT

java - Xamarin.Android 绑定(bind)调用 java 对象方法

我通过名为Xamarin.GradleBinding的VisualStudio扩展创建了Java绑定(bind)库。我添加了ru.rambler.android:swipe-layout:1.0.14包,在使用它的SwipeLayout时,一切正常。但不幸的是,它没有创建相应的C#类或类似的东西。我尝试手动添加包,但仍然没有。我检查了sourceonGitHub.SwipeLayout有一个publicvoid方法reset()没有参数:publicvoidreset()我尝试使用JNIEnv从c#调用此方法。IntPtrtype=JNIEnv.FindClass("ru/ramble

java - 捕获 C++ lambda 表达式错误中的 JNIENV*

我的Main.cpp文件中有一个这样的JNI调用:JNIEXPORTjstringJNICALLJava_packagename_MainActivity_GenerateAlphabet(JNIEnv*env,jobjectthiz){generateAlphabet([](stringletters,stringnumbers){return(env)->NewStringUTF("test");});}但是这段代码给我错误:jni/Main.cpp:在lambda函数中:jni/Main.cpp:86:33:错误:未捕获“env”我真的需要在lambda函数中使用env,谁能帮帮

c++ - 在 JNI 中,是否有针对从 AttachCurrentThread() 返回的 JNIEnv 指针的清理函数?

我想知道从JNI函数AttachCurrentThread()获得的JNIEnv*的生命周期。考虑以下检索JNIEnv指针的函数。JNIEnv*RetrieveJniEnvPtr(){JavaVM*pJavaVM;//AssumepJavaVMisalreadyinitializedJNIEnv*pEnv=NULL;if(pJavaVM->GetEnv((void**)&pEnv,JNI_VERSION_1_6)!=JNI_OK){pJavaVM->AttachCurrentThread((void**)&pEnv,NULL);}returnpEnv;}是否有与调用AttachCurr

Java JNIEnv 段错误

我正在使用它们之间的native库编写一些Java.NET互操作代码,到目前为止一切进展顺利。但是由于某些原因,我无法在JNIEnv下运行任何方法。System::String^JNIStringToNet(JNIEnv*env,jstringjs){constchar*buf=env->GetStringUTFChars(js,0);//segfault现在我可以来回传递变量并进行所有其他类型的通信,所以我想我没有正确初始化它或其他东西。我是这样加载的:this.Lib=(LibHandler)Native.loadLibrary(this.Name,LibHandler.class

c++ - 我可以将 DLL 注入(inject) JVM 并获取 JNIEnv 吗?

我希望能够将.dll注入(inject)到正在运行的JVM进程中。我想知道的是,完成此操作后,我能否以某种方式获取JNIEnv实例,从而允许我访问正在运行的JVM中的对象?我正在努力实现的是与Java反射类似的东西,但在native级别上。 最佳答案 AttachAPI就是你要从进程外注入(inject)一个DLL。请注意,它需要合适的操作系统权限。然后使用JNI调用API和标准JNIAPI从内部执行您需要的任何操作。AttachAPIfromOracle和AttachAPIfromIBM

java - JNI线程模型?

当我从Java调用C/C++时,JavaVM或JNI是否会创建一个新线程来运行C/C++代码,而我的Java线程正在等待?我问这个是因为我的C/C++代码在GPU上运行某些东西,我需要检查特定的缓冲区以取回结果。获得结果后,我需要再次调用我的Java函数。所以我在考虑在C++端创建一个线程,该线程不断检查缓冲区,一旦有一些数据可用,就会回调Java端。 最佳答案 JNI不会在后台创建任何新线程。native函数与调用native函数的java方法在同一线程中执行。反之亦然,当native代码调用java方法时,java方法与调用该方

java - 对 getClass 的 jni 调用为作业对象返回 null

我在使用JNI从C++代码进行Java调用时遇到了问题。我能够获得工作对象,但对工作对象的任何API的调用都失败了。经过将近一天的挖掘并与其他可用的JavaAPI(我在代码中调用的作业对象)进行比较,我发现了一个不同之处。下面这段代码voidprintClassInfo(JNIEnv*env,jobjectobject,jclassklazz){printf("printclassinfo1\n");printf("printclassinfo2\n");//FirstgettheclassobjectjmethodIDmid=env->GetMethodID(klazz,"getCl

android - 错误 : Type 'JNIENV' could not be resolved

我是运行第一个helloJNI示例的AndroidNDK新手。我添加了jni文件夹并添加了c文件,其中我收到一些Unresolved错误。我也将项目转换为C/C++并在eclipse中添加NDK,如下所示但cpp文件中仍然有红色错误行,显示有些无法解决。大家帮帮我! 最佳答案 我解决了这个问题,将项目添加到NativeSupport。遵循这种方法:-Android右键单击​​项目,然后单击Android工具,然后单击添加native支持。 关于android-错误:Type'JNIENV

java - JNI - 从 C++ 调用 Java 方法

所以我一直在尝试从C++调用java方法,但没有任何运气。这是我收到的错误:JNIERROR(appbug):accessedstalelocalreference0x5cb00019(index6inatableofsize2)VMabortingFatalsignal11(SIGSEGV)at0xdeadd00d(code=1)这是我在代码中所做的(java端):publicclassWrapperextendsActivity{privatenativevoidinitJNIBridge();staticfinalStringTAG="Wrapper";protectedvoid

java - native 崩溃 : JNI DETECTED ERROR IN APPLICATION: [thread] using JNIEnv* from [thread]

以下是堆栈跟踪。崩溃起源的源代码是here.我跟踪堆栈跟踪直到android的源代码是here.我无法理解这意味着什么以及为什么它只是有时发生。任何帮助,将不胜感激。很高兴分享更多详细信息。我们已经能够在Android7.0设备上重现此崩溃。但它并不一致。06-2819:09:26.14756965696FDEBUG:************************************************06-2819:09:26.14756965696FDEBUG:NativeCrashTIME:26547206-2819:09:26.14756965696FDEBUG:**