Как я создаю динамическую библиотеку (dylib) с XCode?

Ниже приведено простое изменение, необходимое для вашего xsl.

из: <xsl:value-of select="FcstPeriods/Period/Paragraph"/>

в: <xsl:value-of select="//*:FcstPeriods/*:Period/*:Paragraph"/>

28
задан Kornel 23 November 2008 в 19:25
поделиться

4 ответа

Вероятно, необходимо удостовериться, что динамическая библиотека, которую Вы создаете, имеет экспортируемый файл символов, который перечисляет то, что должно быть экспортировано из библиотеки. Это - просто плоский список символов, один на строку, для экспорта.

кроме того, когда Ваша динамическая библиотека создается, это становится имя установки встроенным в нем, который является, по умолчанию, путем, в котором это создается. Впоследствии что-либо, что связывается против него, будет искать его в указанном пути, первом и единственном, впоследствии ищут (маленький) набор путей по умолчанию, описанных под DYLD_FALLBACK_LIBRARY_PATH в dyld(1) страница справочника .

, Если Вы собираетесь поместить эту библиотеку рядом со своими исполняемыми файлами, необходимо скорректировать ее имя установки к ссылке это. Просто выполнение поиска Google "имени установки" должно поднять тонну информации о выполнении этого.

7
ответ дан Chris Hanson 14 October 2019 в 10:15
поделиться

Динамическое подключение на Mac OS X, крошечный пример

Шаги:

  1. создают библиотеку libmylib.dylib содержащий mymod.o
  2. , компилируют и связывают "callmymod", который называет его
  3. вызов mymod от callmymod, с помощью DYLD_LIBRARY_PATH и проблемы DYLD_PRINT_LIBRARIES

: Вы "просто" хотите создать библиотеку для других модулей для использования. Однако существует пугающая груда программ - gcc, ld, macosx libtool, dyld - с огромным количеством опций, некоторым хорошо гнившим компостом и различиями между MacOSX и Linux. Существуют тонны страниц справочника (я количество 7679 + 1358 + 228 + 226 строк в 10.4.11 PPC), но не очень в способе примеров, или программы с "говорят мне, что Вы делаете" режим.

(Самая важная вещь в понимании состоит в том, чтобы сделать упрощенный ОБЗОР для себя: нарисуйте некоторые изображения, выполните некоторые небольшие примеры, объясните это кому-то еще).

Фон: apple OverviewOfDynamicLibraries , Википедия <час> Dynamic_library

Шаг 1, создает libmylib.dylib -

mymod.c:
    #include <stdio.h>
    void mymod( int x )
    {
        printf( "mymod: %d\n", x );
    }
gcc -c mymod.c  # -> mymod.o
gcc -dynamiclib -current_version 1.0  mymod.o  -o libmylib.dylib
    # calls libtool with many options -- see man libtool
    # -compatibility_version is used by dyld, see also cmpdylib

file libmylib.dylib  # Mach-O dynamically linked shared library ppc
otool -L libmylib.dylib  # versions, refs /usr/lib/libgcc_s.1.dylib
<час>

Шаг 2, компилирует и связывает callmymod -

callmymod.c:
    extern void mymod( int x );
    int main( int argc, char** argv )
    {
        mymod( 42 );
    }
gcc -c callmymod.c
gcc -v callmymod.o ./libmylib.dylib -o callmymod
    # == gcc callmymod.o -dynamic -L. -lmylib
otool -L callmymod  # refs libmylib.dylib
nm -gpv callmymod  # U undef _mymod: just a reference, not mymod itself
<час>

Шаг 3, выполняет соединение callmymod с libmylib.dylib -

export DYLD_PRINT_LIBRARIES=1  # see what dyld does, for ALL programs
./callmymod
    dyld: loaded: libmylib.dylib ...
    mymod: 42

mv libmylib.dylib /tmp
export DYLD_LIBRARY_PATH=/tmp  # dir:dir:...
./callmymod
    dyld: loaded: /tmp/libmylib.dylib ...
    mymod: 42

unset DYLD_PRINT_LIBRARIES
unset DYLD_LIBRARY_PATH

, Который заканчивает один крошечный пример; надежда это помогает понять шаги.
(Если Вы делаете это много, см. GNU Libtool, который является glibtool на макинтошах, и SCons.)
аплодисменты
- denis

50
ответ дан qwerty_so 14 October 2019 в 10:15
поделиться

К сожалению, по моему опыту, документация Apple устарела, избыточна и в ней отсутствует много общей информации, которая вам обычно нужна.

Я написал об этом на своем сайте, где мне нужно было установить FMOD (Sound API) для работы с моей кроссплатформенной игрой, которую мы разработали в универе. Это странный процесс, и я удивлен, что Apple не добавляет больше информации в свои документы для разработчиков.

К сожалению, какими бы «злыми» ни были Microsoft, на самом деле они гораздо лучше заботятся о своих разработчиках с документацией (это исходит от евангелиста Apple).

Я думаю, что в основном вы не делаете, ПОСЛЕ того как вы скомпилировали свой .app Bundle. Затем вам нужно выполнить команду в исполняемом двоичном файле /MyApp.app/contents/MacOS/MyApp, чтобы изменить, где исполняемый файл ищет свой библиотечный файл. Вы должны создать новый этап сборки, который может запустить скрипт. Я не буду объяснять этот процесс снова, я уже сделал это подробно здесь:

http://brockwoolf.com/blog/how-to-use-dynamic-libraries-in-xcode -31-using-fmod

Надеюсь, это поможет.

7
ответ дан Brock Woolf 14 October 2019 в 10:15
поделиться

Вам известна справочная страница Apple Темы по программированию динамических библиотек ? Он должен охватывать большую часть того, что вам нужно. Имейте в виду, что есть общие библиотеки, которые загружаются безоговорочно при запуске программы, и динамически загружаемые библиотеки (комплекты, IIRC), которые загружаются по требованию, и они несколько отличаются в MacOS X от эквивалентов в Linux или Solaris.

5
ответ дан mpontillo 14 October 2019 в 10:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: