2009-07-29 10 views
0

Hoffnung jemand kann mir helfen,iPhone SDK 3 EXC_BAD_ACCESS mit openldap Bibliothek

Ich versuche, OpenLDAP für eine App auf meinem iPhoneOS3 zu bauen, aber wenn ich versuche, etwas aus der Bibliothek zu verwenden, erhalte ich diese Fehlermeldung:

Programm empfangenes Signal: "EXC_ BAD_ACCESS".

Ich folgte diesem website, um openldap mit iphone gcc zu kompilieren. Also baute ich OpenLDAP mit diesem:

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 

I libldap.a kopiert, liblber.a mein Projekt und alle Header als ldap.h ....

In Projekteinstellungen habe ich:

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 

Alles ist in Ordnung, wenn es baut aber ich habe den Fehler, der oben mit dem folgenden Code:

LDAP **ld; 

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

Hat jemand eine Idee, was ich tun kann?

Danke

Antwort

0

Ja, ich habe es funktioniert, so werde ich versuchen, Ihnen zu helfen.

Hier die Befehlszeile, die ich verwendet habe, um alle flasgs einzustellen.

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/" 

Also musste ich BerkeleyDB bauen, meine Version ist 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 

Und schließlich baute ich openldap wie folgt aus:

./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 

Mai werden Sie das gleiche tat, wenn nicht diese Befehle versuchen. Ich weiß, dass ich gcc 4.0.1 anstelle von 4.2.1 die von iPhone OS 3 verwendet habe, aber ich wurde verkeilt, weil ich versuchte, nur eine statische Bibliothek zu bauen, die nicht richtig arbeitete, als ich mein Projekt baute. (Viele Fehler)

Nachdem ich openldap gebaut, habe ich ein neues Projekt

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" 

Hoffnung, die Ihnen helfen können.

0

Ich glaube, ich habe einen Fehler in meinem Beitrag gemacht, sollten Sie versuchen,

diese Zeile zu ändern:

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

durch dieses:

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

Sorry für meine Fehler

Léon