2009-10-19 4 views
1

У меня есть апплет Java, который загружает собственный код через JNI. Все работало отлично, пока я не сделал обновление до Snow Leopard, а затем Safari решил быть немым. Оказывается, Safari будет загружать только 64-битные двоичные файлы в режиме 64 бит. (Вы можете поместить его в 32-битный режим, но это не вариант.) Я изменил свою систему сборки (g ++), чтобы поддерживать создание универсального двоичного файла вместо одного 32-битного двоичного кода. Я успешно создал универсальный двоичный файл, но когда я пытаюсь загрузить его в свой апплет, я получаю неудовлетворенное исключение ссылки, говорящее, что не найдено подходящего изображения, и он не может его отобразить. Кто-нибудь имел дело с этим раньше?Загрузка универсального двоичного кода с Java

Для дополнительной информации ... Когда я напечатал в «файл native.dylib» в терминале, оригинальные 32 двоичные вышел как:
Mach-O динамически подключаемой библиотека совместно i386

И когда я сделал то же самое для универсального двоичного файла, он вышел как:
native.dylib: Mach-O универсальный двоичный 2 архитектур
native.dylib (для архитектуры i386): Mach-O объекта i386
native.dylib (для архитектуры x86_64): 64-разрядный объект Mach-O x86_64

+0

Возможно, это сообщение связано? http://lists.apple.com/archives/Java-dev/2009/Apr/msg00207.html – jitter

ответ

0

Я узнал, что я сделал, что делало вещи неработоспособными. При изменении вещей во всех Makefiles (которых было около 10) я не создавал .a правильно. У меня был какой-то странный способ, который построил каждую арочную версию источника по отдельности, а затем липолировал их вместе. Теперь я понимаю, что это было глупо с моей стороны, но вы живете и учитесь ... Во всяком случае, я решил, что, используя libtool вместо того, чтобы делать все, что помогло. Вместо того, чтобы строить все дуги отдельно, я передал несколько флагов arch в g ++ и объединил их вместе с libtool.