1
我已經爲一個庫創建了一個帶swig的JNI包裝器。我使用swig director重新調用JVM。其中一些回調發生在本地庫內創建的線程上。在非JVM線程上的第一個回調失敗了,我可以追蹤到一個SIGSEGV,忽略AttachCurrentThread的負面返回值(-1),從而取消引用實際上爲null的jenv指針。這發生在swig生成的代碼中。JNI:AttachCurrentThread返回-1
我試圖通過我在本地創建的線程的導向器類回調JVM。這工作正常。但是它並不適用於我包裝的庫創建的線程。
AttachCurrentThread失敗可能的原因是什麼?
這樣的聲音比SWIG更像是一個通用的JNI問題。請參閱http://stackoverflow.com/questions/12900695/how-to-obtain-jni-interface-pointer-jnienv-for-asynchronous-calls。同時你可以做一個最小的,完整的例子來說明這可能嗎?這將使得找出一個更簡單的解決方案。 – Flexo