Как исправить ошибку maclo dlopen библиотеки с правильной архитектурой, но с сообщением «Mach-O, но неправильная архитектура» - PullRequest
0 голосов
/ 10 декабря 2018

Я пытаюсь создать динамически загружаемую библиотеку / пакет (пробовал оба) в XCode (пробовал 9 и 10), в частности, из этого репозитория: https://github.com/kurasu/surge - это аудио плагин VST2, используемый цифровым аудиорабочие станции (например, Ableton Live, Bitwig Studio, Cubase и т. д.).

Я могу создавать архитектуры i386 и x86_64.Однако, когда я пытаюсь загрузить плагин, хост (в данном случае Bitwig - другие молча терпят неудачу) сообщает:

Error loading
/Library/Audio/Plug-Ins/VST/Surge.vst/Contents/MacOS/SURGE: 
dlopen(/Library/Audio/Plug-Ins/VST/Surge.vst/Contents/MacOS/Surge, 262): no suitable image found.  Did find:
    /Library/Audio/Plug-Ins/VST/Surge.vst/Contents/MacOS/Surge: mach-o, but wrong architecture

Тем не менее, библиотека на самом деле является правильной архитектурой,из того, что я могу сказать (хост поддерживает x86_64):

$ lipo -info /Library/Audio/Plug-Ins/VST/Surge.vst/Contents/MacOS/Surge
Non-fat file: /Library/Audio/Plug-Ins/VST/Surge.vst/Contents/MacOS/Surge is architecture: x86_64

Я также создал версию i386 с тем же результатом.

Еще несколько замечаний: этоВ некоторых местах библиотека содержит ассемблерный код, оригинальная сборка VST2 создает dylib со скриптом для его упаковки.Я также изменил его, чтобы создать bundle вместо этого, но в конечном итоге это привело к той же ошибке.Он также усыпан различными условиями для Windows / Mac / Linux.

Я также могу создать отдельный плагин, над которым я работал без каких-либо проблем, просто кажется, что это происходит с этой конкретной базой кодаи создайте сценарии / опции.

Что может быть причиной этого сообщения в том случае, если архитектура действительно правильная?И что я мог сделать, чтобы это исправить?

Большое спасибо!

...