2015-11-23 4 views
1

Я хочу создать библиотеку в Mac OS X El Capitan (10.11.x) и использовать ее в другом приложении с помощью qt creator, поэтому я создал простую библиотеку в qt с этимпуть библиотеки dylib и использовать его в приложении

QT  -= gui 
TARGET = /System/Library/Frameworks/MyFrm.framework/dylib/DynminLinkingLib 
TEMPLATE = lib 

Как вы можете видеть, я создал библиотеку «DynminLinkingLib» в рамках MyFrm; после этого я создал приложение Qt для использования библиотеки.

QT += core gui 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
TARGET = SampleProject 
TEMPLATE = app 
macx: LIBS += -L/System/Library/Frameworks/MyFrm.framework/dylib -lDynminLinkingLib.1.0.0 
INCLUDEPATH += /System/Library/Frameworks/MyFrm.framework/include 

Когда я запускаю мое приложение в Qt, это дает мне эту ошибку:

dyld: Library not loaded: libDynminLinkingLib.1.dylib 
    Referenced from: /Users/mac/Src/dll/DynamicLinking/build-SampleProject-Desktop_Qt_5_5_0_clang_64bit-Debug/SampleProject.app/Contents/MacOS/SampleProject 
    Reason: image not found 
The program has unexpectedly finished. 

Для решения этой ошибки в проектах Qt, я поставил DYLD_LIBRARY_PATH переменную /System/Library/Frameworks/MyFrm.framework/dylib и она работает хорошо, но когда я запустить пакет приложения он не работает и дает мне эту ошибку:

enter image description here

Это происходит из-за «libDynminLinkin gLib.1.dylib "не находится в пути приложения.

otool -D /System/Library/Frameworks/MyFrm.framework/dylib/libDynminLinkingLib.1.0.0.dylib 
libDynminLinkingLib.1.dylib 

У меня есть два вопроса:

  1. Я знаю, как решить эту проблему за счет install_name_tool но я хочу решить эту проблему в QMAKE и .pro файл. Итак, как я могу решить эту проблему с помощью файла pro config?

  2. В Эль Капитане я не могу использовать DYLD_LIBRARY_PATH по соображениям безопасности. Чтобы использовать его, я должен деактивировать SIP (защита целостности системы). Так можно ли использовать DYLD_LIBRARY_PATH без деактивации SIP?

+0

* «Я знаю, как настроить эту проблему, но install_name_tool» * - install_name_tool правильный метод для решения этой проблемы. Я не думаю, что вы можете сделать это через Qt Creator или в .pro – TheDarkKnight

+0

Директива LIBS + = -L path -l filename может дать проблемы с версией. Используйте первый LIBS + =/absolute-path-to-my-dylib. Не используйте символические ссылки, а только физическое местоположение. При необходимости переименуйте. После этого вы можете использовать директиву -L -l – adlag

ответ

0

Это не полное решение, но если вы просто хотите, чтобы некоторые местные библиотеки вы построили, чтобы быть включенным в то время как построить что-то еще вы можете создать ~/lib и ~/include папки и поместить файлы туда. Эти папки находятся по пути по умолчанию.

https://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/DynamicLibraries/100-Articles/UsingDynamicLibraries.html

 Смежные вопросы

  • Нет связанных вопросов^_^