JNI, загрузить 2 раза одну и ту же dll (различное имя), как выбрать, какой использовать? - PullRequest
2 голосов
/ 12 марта 2012

Я работаю с jni на c ++ dll: "sharedMemLib.dll"

Мое java-приложение корректно загружает эти dll дважды: sharedMemLib.dll и sharedMemLib2.dll

Я быНапример, если вы хотите связать определенную DLL с экземпляром класса, один экземпляр JNIInterface будет обращаться к sharedMemLib.dll, а другой экземпляр JNIInterface будет обрабатывать sharedMemLib2.dll.

2 dll имеют одинаковые функции,Любые идеи, как я мог бы выбрать, какой из них получить доступ?

1 Ответ

1 голос
/ 13 марта 2012

Если имена точек входа одинаковы в обеих DLL, забудьте об этом.Даже если вы попытаетесь запустить 2 JVM под одной ОС, я не думаю, что это сработает.Вам нужны два разных имени пакета (или две машины).Я провел некоторое тестирование, и в моей системе была загружена первая загруженная DLL.Теперь, если вы используете обратные вызовы из JNI в Java, обратные вызовы будут направлены в один экземпляр поверх другого из-за этого второго параметра (типа jobject) в вызове.

...