iPhone SDK 3 EXC_BAD_ACCESS с библиотекой openldap

Надеюсь, кто-нибудь может мне помочь,

Я пытаюсь собрать openldap для приложения на моем iPhoneOS3, но когда я пытаюсь использовать что-то из библиотеки, я получаю эту ошибку:

Программа получила сигнал: «EXC_ BAD_ACCESS».

Я следил за этим веб-сайтом, чтобы скомпилировать openldap с айфон gcc. Итак, я построил openldap следующим образом:

    export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
    export SDKROOT=$DEVROOT/SDKs/iPhoneOS3.0.sdk
    export CPPFLAGS="-I$SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.2.1/include/ 
-I$SDKROOT/usr/include/ -I/usr/local/BerkeleyDB.4.7/include/"
    export CFLAGS="$CPPFLAGS -pipe -no-cpp-precomp -isysroot $SDKROOT"
    export CPP="/usr/bin/cpp $CPPFLAGS"
    export LDFLAGS="-L$SDKROOT/usr/lib/ -L/usr/local/BerkeleyDB.4.7/lib/"

    ./configure CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.2.1 \
    LD=$DEVROOT/usr/bin/ld --host=arm-apple-darwin --with-yielding_select=yes
    make depend
    make

Я скопировал libldap.a, liblber.a в свой проект и все заголовки как ldap.h....

В настройках проекта у меня есть:

Header Search Path : /path/to/openldap/headers
Library Search Path : filled with path from libldap.a and liblber.a
Other Linker Flags : -lldap -llber -ObjC

Все в порядке, когда он строится, но я получаю сообщение об ошибке выше со следующим кодом:

LDAP **ld;

ldap_initialize(ld, "ldap://myldap.exemple.com");

Кто-нибудь знает, что я могу сделать?

Спасибо


person Community    schedule 29.07.2009    source источник


Ответы (2)


Я думаю, что ошибся в своем посте, вы должны попробовать изменить

эта строка:

export LDFLAGS="-L$SDKROOT/usr/lib/ -L/usr/local/BerkeleyDB.4.7/include/"

этим:

export LDFLAGS="-L$SDKROOT/usr/lib/ -L/usr/local/BerkeleyDB.4.7/lib/"

Извините за мою ошибку

Léon

person Community    schedule 14.08.2009

Да, у меня все получилось, поэтому я постараюсь вам помочь.

Вот командная строка, которую я использовал для установки всех флагов.

export DEVROOT=/Developer/Platforms/iPhoneOS.platform/Developer
export SDKROOT=$DEVROOT/SDKs/iPhoneOS2.2.sdk

export CPPFLAGS="-I$SDKROOT/usr/lib/gcc/arm-apple-darwin9/4.0.1/include/ -I$SDKROOT/usr/include/ -I/usr/local/BerkeleyDB.4.7/include/"
export CFLAGS="$CPPFLAGS -pipe -no-cpp-precomp -isysroot $SDKROOT"
export CPP="/usr/bin/cpp $CPPFLAGS"

export LDFLAGS="-L$SDKROOT/usr/lib/ -L/usr/local/BerkeleyDB.4.7/lib/"

Поэтому мне нужно было собрать BerkeleyDB, моя версия 4.7.25.

./configure CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.0.1 LD=$DEVROOT/usr/bin/ld --host=arm-apple-darwin
make 
make install

И, наконец, я построил openldap следующим образом:

./configure CC=$DEVROOT/usr/bin/arm-apple-darwin9-gcc-4.0.1 LD=$DEVROOT/usr/bin/ld --host=arm-apple-darwin --with-yielding_select=yes --enable-dynamic=yes --enable-modules=no --enable-static=yes --disable-shared --enable-ldap=yes && make depend && make

Возможно, вы сделали то же самое, если не пробовали эти команды. Я знаю, что использовал gcc 4.0.1 вместо 4.2.1 из iPhone OS 3, но меня заклинило, потому что, когда я пытался собрать только статическую библиотеку, она не работала должным образом, когда я создавал свой проект. (много ошибок)

После сборки openldap я сделал новый проект

add in Header Search Path with the openldap include in Project Settings.
I copied both library into the ressource folder of my project : libldap.a and liblber.a
I filled Other Linker Flags with "-ObjC -lldap -llber"

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

person Community    schedule 12.08.2009