2017-07-23 5 views
0

Plus précisément, j'essaie d'installer glew et freetype. J'ai copié les fichiers .dylibs dans le répertoire .app et défini leurs chemins avec install_name_tool. Lorsque j'essaie de les exécuter sur d'autres ordinateurs, j'obtiens l'erreur suivante:Comment distribuer correctement les dépendances dylib dans un ensemble .app sous OSX?

Library not loaded: @executable_path/../Resources/libGLEW.2.0.0.dylib 
Referenced from: /Volumes/*/Tetris.app/Contents/MacOS/Tetris 
Reason: no suitable image found. Did find: 
    /Volumes/SharedFolders/build/Tetris.app/Contents/MacOS/../Resources/libGLEW.2.0.0.dylib: stat() failed with errno=22 
    /Volumes/SharedFolders/build/Tetris.app/Contents/MacOS/../Resources/libGLEW.2.0.0.dylib: stat() failed with errno=22 
+0

Avez-vous envisagé de placer les bibliothèques dynamiques dans le même dossier que l'exécutable? –

+0

J'ai essayé de les placer dans le même répertoire et j'ai eu la même erreur. Il semble être capable de trouver les dylibs mais il y a quelque chose qui ne va pas chez eux. – user393454

+0

Existe-t-il un tutoriel général pour la distribution des exécutables avec dylibs? – user393454

Répondre

0

J'ai résolu le problème. Le problème est que j'ai exécuté install_name_tool uniquement sur l'exécutable lorsque j'ai dû l'exécuter sur l'exécutable, avec le commutateur -change, et le dylib, avec le commutateur -id.

J'ai également découvert en faisant cela que les dylibs ont d'autres dylibs dont ils dépendent, qui doivent à leur tour être copiés dans le bundle et reconfigurés avec install_name_tool.

Si quelqu'un connaît un outil qui fait tout cela automatiquement, s'il vous plaît laisser un commentaire.