3

iPad用のアプリを開発しています。

現在、 iPad-5.1 Simulatorでアプリケーションをテストしています。

そして私の不幸のために、アプリケーションは落ちます。

1) 私はFacebookSDK 3.0
を使用します 2) FacebookSDKをフレームワークFBiOSSDK
にコンパイルします 3) フレームワークFBiOSSDKをプロジェクトに追加します 4)リンカ
のログを参照してください 5) アーキテクチャ i386 の未定義シンボル: 「_sqlite3_open_v2」および多数の「_sqlite3_*」シンボル。

フレームワークにビルドするときに、facebook-sdk プロジェクトに間違ったオプションを設定したのではないでしょうか?

誰でも助けることができますか?

検索後、解決策を見つけました:

「プロジェクト libsqlite3.0.dylib に追加」

しかしリンカーは言った:「ファイル/path/libsqlite3.dylibを無視し、ファイルに必要なアーキテクチャi386がありません」

- 主な問題 -

1時間後、フレームワークを間違った方法でリンクしていることがわかりました。

スクリプトはローカルディレクトリに作成します(System/Library/FrameworksまたはLibrary/ Frameworks ではありません)。

追加すると、Framework Search Pathsデフォルト値以外に変更されます。

正しい方法でフレームワークを構築するには?

ありがとう!

4

2 に答える 2

6

だから、長い間、私はこのFacebookSDKを機能させるためにそのようなものを作っています:

1)まず、FacebookSDK フレームワークのビルドを削除( rm -rf ) し、フレームワークをビルドするためのスクリプト ( build_framework.sh )を実行します。

2)その後、プロジェクトに追加します (プロジェクト->ビルド フェーズ->バイナリとライブラリをリンク) FacebookSDK.framework (ローカルディレクトリから、ボタンを使用してその他を追加) とlibsqlite3.0dyliblibsqlite3.dylib (検索で検索するだけです-分野!)

0) または 3) その後、私はこれを作成します: ディレクトリ~/Library/Developer/Xcode/DerivedDataを見つけて、これからすべてを削除します。(コマンドrm -rf dir_name/*を使用)

ステップ0)と名付けたステップ3)から行うことができます。

ここで私はあなたを助けることができるスクリプトを提供します

#!/usr/bin/perl
my $pathToCacheDirectory = qq(~/Library/Developer/Xcode/DerivedData/);

sub TaskToDo{
    my ($refToArgv)=@_;
    die "can't work with too much parameters" unless(scalar(@$refToArgv)==1);
    my $what = shift @$refToArgv;
    my $time = 30; #wait 30 seconds in each iteration
    my $workRef = sub{
        print "i will delete: ";
        print qx(ls $pathToCacheDirectory);
    qx(rm -rf $pathToCacheDirectory);
    };
    #view help
    if ($what eq 'help'){
        print qx(perldoc -t $0);
    }
    #list directory 
    if ($what eq 'watch'){
    print qx(ls $pathToCacheDirectory);
    }
    #kill files instantly
    if ($what eq 'now'){
    print 'kill now'.qq(\n);
    $workRef->();
    print 'see result'.qq(\n);
    print qx(ls $pathToCacheDirectory);
    }
    #switch on watcher
    if ($what eq 'work'){
    for(;;){
        #in INF loop
        for my $s(0..4){
        #print "this is <<$_>>\n";
        print "time remaining: ".(5-$s)*$time." sec \n";
        sleep($time);
        }
        $workRef->();    
        sleep(10);
    }
    }
} 

TaskToDo(\@ARGV);



__END__

=head1 DESCRIPTION

This script clear directory with cache from Xcode

    -- 'help'  will show this log

    -- 'work'  will run script as observer and killer

    -- 'watch' will show info about directory with cache

    -- 'now'   will kill all instantly

    Example: perl scriptName.pl help

=cut
于 2012-07-27T15:36:38.283 に答える