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”

- 主要问题 -

一个小时后,我发现我以错误的方式链接框架。

脚本在本地目录中创建它(不在System/Library/FrameworksLibrary/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/*

您可以从步骤 3) 开始,我也将其命名为步骤 0)。

在这里我提供一个脚本,它可以帮助你

#!/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 回答
0

我找到的解决方案是转到 Target Info 并删除 XCode 创建的 Framework 搜索路径。然后一切都正确编译。

于 2013-11-17T01:29:10.140 回答