如何使用JNI管理C ++代码中的静态变量?

卡米利亚

我的问题是,假设我有一个带有单例的c ++类,并且通过JNI方法调用了这个单例,每次我从java调用到c ++时,单例变量是否因为其静态而更改了,还是保持不变?每次我从Java调用C ++时,它是否在新线程上运行该方法,还是没有?

示例代码:

在Java中:

class NativeLib
{
  public native void updateFrame();
}

在C / C ++中:

JNIEXPORT void JNICALL Java_com_Company_NativeLib_NativeLib_updateFrame()
{
   sceneManager::getInstance()->updateFrame();
}

由于每个实例的静态变量,scenerManager :: getInstance()会返回新实例还是最新创建的实例?

我在android中遇到的主要问题是我的应用程序崩溃了,却没有显示任何logCat信息,为什么它崩溃了。

但是如果我评论了sceneManager :: getInstance()-> updateFrame(); ,它永远不会崩溃,所以我认为每当Java调用C ++时,它就在一个新线程中,这意味着静态变量不会

淡淡的

将VM视为应用程序已调用的C / C ++代码库。有时它会回调您的代码。

单例将不会重新创建-只是一个方法调用。Dalvik VM线程只是pthread,执行Java语言代码的本机调用的任何线程都是执行C ++代码的线程。

最好的选择是附加一个本机调试器。FWIW,在logcat中不执行任何操作而崩溃的一种方法是使本机递归溢出堆栈。另一种方法是更改​​SIGSEGV / SIGBUS和朋友的信号处理程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用JNI管理C ++代码中的静态变量?

来自分类Dev

如何在Visual C ++中的项目之间共享代码或静态库中的静态变量的“未解析的外部符号”

来自分类Dev

C ++和Java中的静态变量

来自分类Dev

成员函数中的C ++静态变量

来自分类Dev

类中的C ++静态变量

来自分类Dev

C结构中的静态变量

来自分类Dev

C ++中的隐式静态变量?

来自分类Dev

成员函数中的C ++静态变量

来自分类Dev

C中的静态变量存在问题

来自分类Dev

在类中创建静态变量(C ++)

来自分类Dev

在C中创建静态变量

来自分类Dev

C ++中的静态类成员变量和静态变量

来自分类Dev

在C99中使用静态变量初始化静态变量

来自分类Dev

如何从静态方法中引用非静态变量?

来自分类Dev

如何在类静态成员中引用静态变量?

来自分类Dev

C ++:如何访问存储在multimap静态变量中的数据

来自分类Dev

如何在C中编译静态和动态变量

来自分类Dev

如何使用lldb在函数中查找静态变量?

来自分类Dev

使用静态变量在Objective C中引用类的实例?

来自分类Dev

状态管理的静态变量

来自分类Dev

Java如何初始化静态变量和静态方法?(使用简单代码)

来自分类Dev

代码中的静态变量

来自分类Dev

Python 2.7:如何获取类中的静态变量列表?

来自分类Dev

如何检查Python中是否存在静态变量?

来自分类Dev

如何在Typescript中的函数内部声明静态变量?

来自分类Dev

如何在JVM中维护Java静态变量

来自分类Dev

如何在模块中定义静态变量?

来自分类Dev

如何在CUDA中声明静态变量

来自分类Dev

如何在python中创建静态变量?