我在使用JNI時遇到了問題,並且在此問題上停留了相當長時間。之前我曾發佈過這方面的消息,但從未收到過答案,並且偶爾會進行大量的研究。在將jByteArray轉換爲.NET字節時出現問題[]
我JNI簽名:
JNIEXPORT void JNICALL Java_MyApplet_invokeManager(JNIEnv *jniEnvPtr, jobject javaObj, jbyteArray encodedData)
我的一些代碼:
boolean isCopy;
jbyte* bytes = jniEnvPtr->GetByteArrayElements(encodedData, &isCopy);
jniEnvPtr->ReleaseByteArrayElements(encodedData, bytes, JNI_ABORT);
myManager->ShowQueue(encodedData);
錯誤消息:
error C2664: 'MyModule::JniToManaged::ShowFormQueue' : cannot convert parameter 2 from 'jbyte *' to 'cli::array<Type,dimension> ^'
我發現沒有辦法將其轉換爲C#的字節[]我需要通過。我聽說過投射jbyte *對象,但無法弄清楚如何將其轉換爲正確的格式。
您應該在轉換結束時調用'ReleaseStringUTFChars',否則可能導致'jstring'對象被無限期地固定,導致內存碎片,或者C++副本被無限期保留,導致內存泄漏。 – GooseSerbus 2013-04-15 21:54:25
啊,感謝您的支持。我記得把它叫做jbytearray,只是忘了它的字符串。 – gwin003 2013-04-17 17:42:51