Ошибка пути dylib @executable_path в комплекте плагинов - PullRequest
12 голосов
/ 19 января 2010

Я разрабатываю комплект плагинов , скажем MyPlugIn.bundle для приложения , скажем BigApp.app. Для этого комплекта требуется dylib , скажем MyPlugIn.bundle/Contents/Resources/library.dylib. Я переместил пути для library.dylib, как я сделал бы для простого пакета приложений:

$ otool -L MyPlugIn.bundle/Contents/MacOS/MyPlugIn
MyPlugIn.bundle/Contents/MacOS/MyPlugIn:
 @executable_path/../Resources/library.dylib (compatibility version 0.0.0, current version 0.0.0)
 [...]

$ otool -L MyPlugIn.bundle/Contents/Resources/library.dylib
MyPlugIn.bundle/Contents/Resources/library.dylib:
 @executable_path/../Resources/library.dylib (compatibility version 0.0.0, current version 0.0.0)
 [...]

Но BigApp.app не удается загрузить этот пакет, и Console.app для Mac OS X записывает следующее:

19/01/10 15:42:59 BigApp[51516] Error loading /Library/Application Support/BigApp/Plug-Ins/MyPlugIn.bundle/Contents/MacOS/MyPlugIn:  dlopen(/Library/Application Support/BigApp/Plug-Ins/MyPlugIn.bundle/Contents/MacOS/MyPlugIn, 262): Library not loaded: @executable_path/../Resources/library.dylib
  Referenced from: /Library/Application Support/BigApp/Plug-Ins/MyPlugIn.bundle/Contents/MacOS/MyPlugIn
  Reason: image not found

Кажется, что @ executetable_path заменяется не путем к исполняемому файлу MyPlugIn.bundle, а путем BigApp.app для исполняемого файла .

Любой обходной путь к этому, без абсолютного пути и чтобы он работал на Mac OS X 10.4 (Tiger) ? Спасибо.

1 Ответ

17 голосов
/ 19 января 2010
...