【发布时间】:2016-08-09 23:52:23
【问题描述】:
我有一个 C++ dll,我想通过将函数导出到 C# 来在 Unity 中使用它。 Unity 项目在 Android 设备上运行,C++ 代码使用 java。要初始化 C++,我需要先调用以下函数:
void api_initialize(JNIEnv* env, jobject* app_context, jobject* class_loader) {
JavaVM* vm = nullptr;
env->GetJavaVM(&vm);
if (!vm) {
return;
}
//Do other proprietary things
}
在 Unity 中,我有以下导出的 Dll 函数
[DllImport (dllName)]
private static extern void api_initialize (IntPtr java_env, IntPtr app_context, IntPtr class_loader);
我的问题是如何在我的 C# 类中获取 JNIEnv 指针,然后将其作为参数传递给该函数?
我不是这个 API 的创建者,也没有修改它的权限,所以我需要从 JNIEnv 获取 JavaVM,而不是反过来。
【问题讨论】:
-
我相信您可以在这里找到答案-> stackoverflow.com/questions/21951711/… 或使用 Oracle 文档创建自定义 java 调用 -> 情况http://docs.oracle.com/javase/6/docs/ technotes/guides/jni/spec/design.html#wp715 无论如何是一个很好的问题。
-
您可以为此使用 JNI_GetCreatedJavaVMs 吗?
标签: java android unity3d dll java-native-interface