Я использую проект Qt4Dotnet для переноса приложения, изначально написанного на C #, на Linux и Mac. Переход на Linux не потребовал особых усилий и работает нормально. Но Mac (10.4 Tiger) немного более упрям.
Проблема в том, что когда я пытаюсь запустить свое приложение, оно выдает исключение. Исключение гласит, что com.trolltech.qt.QtJambi_LibraryInitializer
не может найти все необходимые файлы. Инициализатор библиотеки QtJambi использует переменную окружения java.library.path
VM. Эта переменная включает текущий рабочий каталог. Я положил все необходимые библиотеки в рабочую директорию. Когда я пытаюсь запустить приложение из MonoDevelop IDE, инициализатор может загрузить одну библиотеку, но другие библиотеки «отсутствуют»:
An exception was thrown by the type initializer for com.trolltech.qt.QtJambi_LibraryInitializer ---> java.lang.RuntimeException: Loading library failed, progress so far:
No 'qtjambi-deployment.xml' found in classpath, loading libraries via 'java.library.path'
Loading library: 'libQtCore.4.dylib'...
- using 'java.library.path'
- ok, path was: /Users/chin/test/bin/Debug/libQtCore.4.dylib
Loading library: 'libqtjambi.jnilib'...
- using 'java.library.path'
Оба libQtCore.4.dylib
и libqtjambi.jnilib
находятся в одном каталоге. Когда я пытаюсь запустить его из командной строки, инициализатор не может загрузить даже libQtCore.4.dylib
.
Я использую Qt4Dotnet v4.5.0 (в настоящее время самая последняя версия) с библиотеками QtJambi v4.5.2. Это может быть источником проблемы, но я не могу ни скомпилировать Qt4Dotnet v4.5.2 самостоятельно, ни найти библиотеки QtJambi v4.5.0. На странице проекта указано, что к исходному коду QtJambi необходимо применить какой-то патч, чтобы быть совместимым с платформой Mono, но этот патч еще не выпущен. Без этого патча приложение вылетает странным образом (кроме ошибки поиска в библиотеке).
Я должен отметить, что оригинальный QtJambi прекрасно загружает все необходимые библиотеки, поэтому могут возникнуть проблемы с компилятором IKVM, используемым для перевода QtJambi в библиотеку .Net.
Какие-нибудь предложения, как я могу преодолеть эту проблему?