JNI,加载2次相同的dll(不同名称),如何选择使用哪一个?

时间:2012-03-12 10:33:11

标签: java dll java-native-interface

我在c ++ dll上使用jni:“sharedMemLib.dll”

我的java应用程序正确加载这些dll两次:sharedMemLib.dll和sharedMemLib2.dll

我想将一个特定的dll与一个类的实例相关联,例如,一个JNIInterface实例将访问sharedMemLib.dll,而另一个JNIInterface实例将访问sharedMemLib2.dll。

2 dll具有相同的功能,我可以选择哪种方式来访问?

1 个答案:

答案 0 :(得分:1)

如果两个DLL中的入口点名称相同,请忘记它。即使您尝试在同一操作系统下运行2个JVM,我也不认为它会起作用。您需要两个不同的包名(或两台机器)。我做了一些测试,在我的系统上,加载的第一个DLL是使用的那个。现在,如果您正在使用从JNI到Java的回调,则由于调用中的第二个参数(类型jobject),回调将被定向到另一个实例。