Java JNI,加载2次相同的dll(不同的名称),如何选择使用哪一个? 我在C++ DLL上使用JNI:“SyrdMimLab.dll”< /P>

Java JNI,加载2次相同的dll(不同的名称),如何选择使用哪一个? 我在C++ DLL上使用JNI:“SyrdMimLab.dll”< /P>,java,dll,java-native-interface,Java,Dll,Java Native Interface,我的java应用程序两次正确加载这些dll:sharedMemLib.dll和sharedMemLib2.dll 我想将特定的dll与类的实例相关联,例如,JNIInterface的一个实例将访问sharedMemLib.dll,JNIInterface的另一个实例将访问sharedMemLib2.dll 这两个dll具有相同的函数,您知道我如何选择访问哪一个吗?如果两个dll中的入口点名称相同,那就别管它了。即使您尝试在同一操作系统下运行两个JVM,我也不认为它会起作用。您需要两个不同的包名(

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

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


这两个dll具有相同的函数,您知道我如何选择访问哪一个吗?

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

的确如此。我通过在dll中实现对象解决了这个问题。我将构造几个对象,而不是加载(尝试)几个dll。