gpt4 book ai didi

java - QAndroidJNI调用方法错误

转载 作者:行者123 更新时间:2023-11-30 05:07:24 26 4
gpt4 key购买 nike

我有以下 java 函数可以在附件模式下打开 USB 端口。

public int openAccessory() throws Exception { /* Open stuff */ }
public int closeAccessory() throws IOException { /* Close stuff */ }

我从 C++ 调用这些函数,实例化一个名为 JavaObject 的 QAndroidJniObject,并执行以下调用:

int AOAConnection::Open() {
JNIEnvironmentAttacher jea(&this->JNIE);
return JavaObject.callMethod<jint>("openAccessory");
}

int AOAConnection::Close() {
JNIEnvironmentAttacher jea(&this->JNIE);
return JavaObject.callMethod<jint>("closeAccessory", "(V)I");
}

所以这段代码工作得很好而且花花公子,问题是如果我将第一个 C++ 调用更改为(我之前所做的):

return JavaObject.callMethod<jint>("openAccessory", "(V)I");

我的程序烧毁并严重崩溃。为什么是这样?我是否依赖于某种扭曲的 UB 才能正常工作。

最佳答案

 int AOAConnection::Close () {
JNIEnvironmentAttacher jea(&this->JNIE);
return JavaObject.callMethod<jint>("closeAccessory", "(V)I");
}

So this code is working fine

你很幸运它做到了:因为 closeAccessory 没有参数,但你提到它确实有一个 ((V)I) 并且没有指定它。所以,是的,我敢打赌你会在这里得到一些未定义的行为,然后如果你用不同的函数调用重复同样的错误你会崩溃......

关于java - QAndroidJNI调用方法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461490/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com