Проблема с libcrypto / OpenSSL в приложении Mac App Store - PullRequest
3 голосов
/ 13 августа 2011

Я готовлю свое приложение для Mac App Store, и как часть этого, я заглянул в NPReceiptVerification Ника Полсона и пытался заставить все работать.Это довольно простая установка, но из того, что я понял, вы должны скомпилировать libcrypto в свое приложение как статическую библиотеку, чтобы избежать компромисса путем замены динамических библиотек.

Это означает, что мне нужно предоставить своисобственный libcrypto.a (если я правильно понимаю).Я сам скомпилировал его и добавил в свой проект XCode.Проблема сейчас в том, что по какой-то причине при компиляции моего проекта XCode просто игнорирует libcrypto в проекте и вместо этого переходит на версию dylib в другом месте системы, в которой отсутствует 64-битный бинарный файл, что приводит к ошибке компиляции.*

Что я могу сделать, чтобы Xcode использовал скомпилированную версию библиотеки?Я знаю, это может показаться простым делом, но как программист по какао, который работает только с библиотеками Apple, все это кажется чуждым.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 19 апреля 2013

У меня была та же проблема, которую я решил, переименовав файл .a в libmycrypto.a перед добавлением его в проект, решение, которое я получил из Ссылка на libcrypto для Leopard? .Я предполагаю, что это может также сработать, чтобы изменить порядок пути поиска в библиотеке, но я не уверен, что когда-нибудь снова не испорчу это.

Если вы посмотрите на команду ссылки в окне выводаXcode, вы можете увидеть «-lcrypto», который меняется на «-lmycrypto» при переименовании и повторном добавлении библиотеки.Это препятствует тому, чтобы он когда-либо связывал libcrypto.dylib, независимо от порядка, в котором он ищет библиотеки.

1 голос
/ 14 августа 2011

Я предполагаю, что здесь вы используете Xcode 4, но это должно быть похоже на Xcode 3.

Выберите ваш проект на боковой панели и выберите цель приложения.Перейдите в раздел «Фазы сборки».В разделе «Связать двоичные файлы с библиотеками» необходимо убедиться, что там находится ваш файл .a, а не dylib.(Также помните, что нет необходимости помещать файлы .a в фазу сборки «Копирование файлов» - как вы обнаружите, что делаете с фреймворками Cocoa - поскольку статические библиотеки компилируются в ваше приложение.)

0 голосов
/ 28 января 2014

Проблема сейчас в том, что по какой-то причине при компиляции моего проекта Xcode просто игнорирует libcrypto в проекте и вместо этого переходит на версию dylib в другом месте системы, в которой отсутствует 64-битный бинарный файл, что приводит к сбою компиляции. .

Предполагая, что ваши пути верны (в частности, что вы предоставляете через -L) .... Это известная проблема с Apple и Xcode. Xcode будет делать то же самое для iOS, хотя iOS не может загружать несистемные dylibs !!! Как инженеры Apple, не получили памятку ...

user2297467 дал вам ответ. Вы должны переименовать или переместить dylib из каталога библиотеки.

Что-то еще, что не работает в Apple Xcode: пропустите -L, пропустите -l и укажите полный путь к архиву (например, /usr/local/ssl/libcrypto.a). Это работает везде, где я знаю, кроме Apple.

...