Я пытаюсь загрузить код С++ в свой проект Java с помощью JNI. У меня есть несколько DLL для загрузки, и, к сожалению, существует циклическая зависимость между двумя из них: dll A нужна dll B, которая, в свою очередь, нуждается в dll A! Я знаю, что круговые зависимости между DLL — это плохой дизайн программирования, но в моем проекте код C++ для меня — черный ящик.
Есть ли способ загрузить DLL с циклической зависимостью?
Спасибо за вашу помощь.
jpsi
Подробности:
Мой код довольно прост:
System.loadLibrary("myDLLA"); // needs dll B to be loaded!
System.loadLibrary("myDLLB"); // needs dll A to be loaded!
System.loadLibrary("myDLLC"); // needs dll B
// then call my native method implemented in dll C
Путь к библиотеке Java в порядке и содержит две DLL (он указан как аргумент виртуальной машины, я его сбросил и проверил во время выполнения). Циклическая зависимость была подтверждена Dependendcy Walker.
Ошибка:
java.lang.UnsatisfiedLinkError: E:\...\myDLLA.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1928)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854)
at java.lang.Runtime.loadLibrary0(Runtime.java:845)
at java.lang.System.loadLibrary(System.java:1084)
Мой проект разработан в Eclipse (Helios) как динамический веб-проект, развернутый на сервере tomcat 6.
Пожалуйста, сообщите мне, если вам нужна дополнительная информация.
Еще раз спасибо за любую помощь!!