Tôi có một dll C++ mà tôi muốn sử dụng trong Unity bằng cách xuất các hàm sang C#. Dự án Unity chạy trên các thiết bị Android và mã C++ sử dụng java. Để khởi tạo C++ tôi cần phải gọi hàm sau đây đầu tiên:Nhận con trỏ JNIEnv hợp lệ
void api_initialize(JNIEnv* env, jobject* app_context, jobject* class_loader) {
JavaVM* vm = nullptr;
env->GetJavaVM(&vm);
if (!vm) {
return;
}
//Do other proprietary things
}
Trong Unity Tôi có sau chức năng DLL xuất khẩu
[DllImport (dllName)]
private static extern void api_initialize (IntPtr java_env, IntPtr app_context, IntPtr class_loader);
Câu hỏi của tôi là Làm thế nào để có được một con trỏ JNIEnv trong C# lớp để sau đó vượt qua như một tham số vào chức năng này?
Tôi không phải là người tạo ra API này và không có quyền truy cập để sửa đổi nó, vì vậy tôi cần lấy JavaVM từ JNIEnv, không phải theo cách khác.
Tôi tin rằng bạn có thể tìm thấy một câu trả lời tại đây-> http://stackoverflow.com/questions/21951711/how-to-pass-a-jni-c-sharp-class-into-java-or-handle-this- hoặc tạo tùy chỉnh của bạn cuộc gọi java bằng tài liệu Oracle -> situationhttp: //docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp715 Dù sao thì cũng là một câu hỏi hay. – Cabrra