我的问题是,假设我有一个带有单例的c++类,并且通过JNI方法调用了这个单例,每次我从java调用到c++时,单例变量是否因为其静态而更改了,还是保持不变?每次我从Java调用C++时,它是否在新线程上运行该方法,还是没有? 示例代码: 在Java中: class NativeLib { public native void updateFrame(); } 在C / C++中: JNIEXPORT void JNICALL Java_com_Company_NativeLib_NativeLib_updateFr…

2020年11月29日 0条评论 48点热度 阅读全文

我正在尝试构建一个C++文件,以便通过JNI在我的Android应用程序中使用。我正在使用Cygwin在Windows中构建。我对此完全陌生,不知道我在做什么。 这是输出的一部分: $ g++ -c test_wrap.cxx -I"C:\dev\android-ndk-r4b\build\platforms\android-4\arch-arm\usr\include" -I./include In file included from C:/dev/android-ndk-r4b/build/platforms…

2020年11月28日 0条评论 52点热度 阅读全文

在android中,我使用pthread_create创建本机线程,然后在Callback过程中,调用FindClass以获取Java类。但它不起作用。我从android jni tips获得提示我在FindClass from any thread in Android JNI中找到了解决方案 我这样修改我的项目[编辑] JavaVM* gJvm = nullptr; static jobject gClassLoader; static jmethodID gFindClassMethod; JNIEXPORT…

2020年11月25日 0条评论 45点热度 阅读全文

我正在使用JNI在C++和Java之间传递数据。我需要传递“长”类型,并使用类似以下内容的方法: long myLongVal = 100; jlong val = (jlong)myLongVal; CallStaticVoidMethod(myClass, "(J)V", (jvalue*)val); 但是,在Java中,当检索到'long'参数时,它会以非常大的负数形式被检索。我究竟做错了什么? 解决方案如下: 当传递jlong​​(64位)作为指针(最有可能是32位)时,您必然会丢失数据。我不确定约定是什么…

2020年11月23日 0条评论 18点热度 阅读全文

我正在使用本机代码开发一个android项目,该代码应该更新对象中的List和一些其他 bool(boolean) 变量。 考虑以下代码 我的代码中的一些Java类看起来像: class ReturnObject { boolean a, b; public List<String[]> listA; } public class foo { public native void someFunction(ReturnObject returnObject); } 本机代码如下所示: JNIEXPORT…

2020年11月20日 0条评论 28点热度 阅读全文

我正在尝试使用Android Studio1.3.2 + NDK + Windows7构建程序。我想将字符串从Java函数传递给本机C函数(const char *)。 本机C函数声明为:- public native int HRFromJNI(String path); Java函数调用为:- tv.setText(String.valueOf(HRFromJNI(path))); 本机C函数是:- extern "C" { JNIEXPORT jint JNICALL Java_com_example_hel…

2020年11月15日 0条评论 13点热度 阅读全文

我试图使用opencv库,所以我在Android Studio中导入了它的一个项目,当我尝试运行它时,出现了此错误: Error:Execution failed for task ':openCVSamplefacedetection:compileDebugNdk'. NDK not configured. Download the NDK from http://developer.android.com/tools/sdk/ndk/.Then add ndk.dir=path/to/ndk in local…

2020年11月7日 0条评论 31点热度 阅读全文

我有一个本地函数调用,它调用我的c++代码,并且此代码创建了我的用户定义类的实例。 此功能具有以下签名: public native Object loadEngine(int arg); 进行此调用之后,我想调用更多本机函数,这些函数将采用从loadEngine()返回的“对象”并对其进行修改,或从中请求数据。 签名示例: public native String loadEngine(Object engine, int queryID); 甚至可以这样做吗? 如果可能,我如何将GameEngine数据类型转换…

2020年11月3日 0条评论 43点热度 阅读全文

我已经查看了该站点上的其他解决方案以及其他解决方案,但是根本找不到我的问题的解决方案。 3262440 我最初试图使用来自OpenCV的面部检测样本,并决定简化限制问题来源的过程。 DetectionBasedTracker.java package com.camgen.facialRecognition; public class DetectionBasedTracker { public DetectionBasedTracker(String cascadeName, int minFaceSize) {…

2020年11月2日 0条评论 16点热度 阅读全文

我正在制作cocos2d-x游戏,但遇到一些奇怪的行为,不确定其是否正常或正在发生什么,但这是正在发生的事情,因此AppActivity.java类扩展了Cocos2dxActivity.java类。我不必在System.loadLibrary("MyGame");类中调用AppActivity.java,因为它是在Cocos2dxActivity.java中调用的。但这是如果我做这样的正常声明会发生的情况 private native String invokeNativeString(); 一切正常,但随后我尝…

2020年11月1日 0条评论 10点热度 阅读全文