2013-04-12 6 views
1

У меня было this problem с ICU в моем приложении, пытаясь запустить в Qt Creator на моем Mountain Lion MacBook Pro.построить/установить успешно, но во время выполнения: dyld изображение не найдено - почему?

Теперь я обнаружил, что во время выполнения у меня есть аналогичная проблема с dmg, который я создаю на этом же MacBook Pro. Сборка завершается успешно, запуск дамага и установка появляется успешно, но когда я пытаюсь запустить я получаю:

Dyld Error Message: 
    Library not loaded: @executable_path/../Frameworks/libicuuc.46.dylib 
    Referenced from: /Applications/MapCreator.app/Contents/SharedLibraries/libicui18n.46.1.dylib 
    Reason: image not found 

Я схватил предыдущую помечена версию нашего приложения (и построить скрипт) из системы управления версиями и я получаю такая же проблема, когда она построена на этом MacBook.

Единственные ошибки, которые я вижу при запуске скрипта сборки, перечислены ниже. Я считаю, что эти ошибки всегда присутствовали в нашей сборки на всех машинах, и никогда не было проблемой, но я их здесь только в случае, если это оказывается полезным:

ERROR: "strip: can't map file: /Users/david/dev/svn/map_creator1.0.2/build/mac/pkg-root/Applications/MapCreator.app/Contents (Invalid argument) 
" 
ERROR: "" 
ERROR: "install_name_tool: can't map file: /Users/david/dev/svn/map_creator1.0.2/build/mac/pkg-root/Applications/MapCreator.app/Contents/Frameworks//.. (Invalid argument) 
" 
ERROR: "" 
ERROR: "otool: can't map file: /Users/david/dev/svn/map_creator1.0.2/build/mac/pkg-root/Applications/MapCreator.app/Contents/Frameworks//.. (Invalid argument) 
" 
ERROR: no file at "/usr/lib/libicui18n.46.dylib" 
ERROR: no file at "/usr/lib/libicuuc.46.dylib" 
ERROR: no file at "/usr/lib/libicudata.46.dylib" 

Я не уверен, где смотреть, чтобы отследить это. Может кто-то указать мне верное направление?

+0

Существует ли libicuuc.46.dylib' внутри MapCreator.app? Если да, то на каком пути? – bdash

+0

Да, это в содержании/SharedLibraries, с другими ICU dylib. SharedLibraries - это родной брат. Кстати, это то же самое место в ранней версии нашего приложения. Насколько я могу судить. –

ответ

1

Видимо, на моем MacBook есть что-то другое в установке ICU. Проблема решена путем добавления в наш скрипт более install_name_tool -change строк, чтобы изменить, где он ищет зависимости для файлов ICU.

Формат:

install_name_tool -change old new file 

Если «старый» путь не совпадает, он просто игнорирует команду. Таким образом, простое добавление новых строк охватывает базы различных возможных установок ICU.