1

我在 java 中创建了一个线程,它使用 JNI 将数据传递给旧版 C++。C++ 代码在单独的线程上执行一些任务然后返回,此时我想从 JNI 回调到 Java 线程而不是主接口线程。代码似乎可以毫无错误地构建和运行,但是当调用 CallVoidMethod 以回调 Java 时,什么都没有发生,没有异常或错误,它似乎确实调用了 Java 代码。

我正在调用 AttachCurrentThread,它似乎工作并在最后分离,查找方法的调用似乎都成功了。有没有人有任何想法或我有错误的想法?

4

1 回答 1

2

没有解决此类问题的灵丹妙药;你可能会让任何一个小事情出错。我建议从一些不起作用的代码开始违反直觉。故意设置方法ID错误;看看系统的行为有何不同。将对象引用(或类引用,如果是静态方法)设置为意外对象,或不存在的对象;看看当对象引用没有全球化时会发生什么......你已经明白了。

于 2012-12-13T15:19:59.450 回答