0

誰かが私を助けてくれることを願って、

iPhoneOS3 でアプリの openldap をビルドしようとしていますが、ライブラリから何かを使用しようとすると、次のエラーが発生します。

プログラム受信信号: 「EXC_BAD_ACCESS」。

このWebサイトに従って、openldapをiphone 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");

誰かが私に何ができるか考えていますか?

ありがとうございました

4

2 に答える 2

0

私は私の投稿に間違いを犯したと思います。あなたは変更を試みる必要があります

この行:

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

私の間違いでごめんなさい

レオン

于 2009-08-14T17:02:41.227 に答える
0

はい、うまくいきましたので、お手伝いさせていただきます。

ここでは、すべてのフラグを設定するために使用したコマンド ラインを示します。

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

これらのコマンドを試していない場合は、同じことを行った可能性があります。iPhone OS 3 の 4.2.1 の代わりに gcc 4.0.1 を使用したことは知っていますが、静的ライブラリのみをビルドしようとしたときに、プロジェクトのビルド時に適切に動作しなかった原因が突き当たりました。(エラーが多い)

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"

それがあなたを助けることを願っています。

于 2009-08-12T17:44:30.260 に答える