菜鸟教程小白 发表于 2022-12-12 16:27:06

ios - 链接错误 Xcode libx264.a ARM


                                            <p><p>我正在尝试构建 libx264.a 以在我的 iphone 4s(运行 iOS 6.1.3)上运行</p>

<p>我正在使用 MACOSX 10.9 终端应用程序构建它:</p>

<pre><code>CC=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang ./configure
--host=arm-apple-darwin
--sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk
--prefix=armv7
--extra-cflags=&#39;-no-integrated-as -arch armv7&#39;
--extra-ldflags=&#34;-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/system -arch armv7&#34;
--enable-pic --enable-static
</code></pre>

<p>这给了我输出:</p>

<pre><code>platform:      ARM
system:      MACOSX
cli:         yes
libx264:       internal
shared:      no
static:      yes
asm:         yes
interlaced:    yes
avs:         avxsynth
lavf:          no
ffms:          no
mp4:         no
gpl:         yes
thread:      posix
opencl:      yes
filters:       crop select_every
debug:         no
gprof:         no
strip:         no
PIC:         yes
bit depth:   8
chroma format: all
</code></pre>

<p>然后我运行“make”,它会生成一个 libx264.a 存档。</p>

<p>到目前为止,一切都很好。</p>

<p>在我设置的 Xcode(版本 5.0.2 (5A3005))应用程序上:</p>

<p>1) Build Settings -> Header Search Path -> x264 父目录 (../x264 )<br/>
2) 构建阶段 -> 使用二进制文件链接库 -> 添加其他... ( ../x264/libx264.a )<br/>
3)build设置->其他链接器标志:-ObjC</p>

<p>在我的 AppDelegate.mm 中:</p>

<pre><code>#import &#34;AppDelegate.h&#34;
#import &#34;x264.h&#34;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{   
    x264_param_t x264param;
    x264_param_default(&amp;x264param);

    // Override point for customization after application launch.
    return YES;
}

...
</code></pre>

<p>当我尝试在设备上运行它时出现错误:</p>

<pre><code>Undefined symbols for architecture armv7:
&#34;x264_param_default(x264_param_t*)&#34;, referenced from:
- in AppDelegate.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1
(use -v to see invocation)
</code></pre>

<p>这里是 xcode 调用的命令:</p>

<pre><code>Ld /Users/danieldantas/Library/Developer/Xcode/DerivedData/testingCpp-bvawshyhjcybwvadwwwjqxuomjts/Build/Products/Debug-iphoneos/testingCpp.app/testingCpp normal armv7
cd /Users/danieldantas/Desktop/projects/testingCpp
setenv IPHONEOS_DEPLOYMENT_TARGET 6.0
setenv PATH &#34;/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin&#34;
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -isysroot
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk
-L/Users/danieldantas/Library/Developer/Xcode/DerivedData/testingCpp-bvawshyhjcybwvadwwwjqxuomjts/Build/Products/Debug-iphoneos
-L/Users/danieldantas/Desktop/projects/testingCpp -L/Users/danieldantas/Desktop/projects/x264
-F/Users/danieldantas/Library/Developer/Xcode/DerivedData/testingCpp-bvawshyhjcybwvadwwwjqxuomjts/Build/Products/Debug-iphoneos
-filelist /Users/danieldantas/Library/Developer/Xcode/DerivedData/testingCpp-bvawshyhjcybwvadwwwjqxuomjts/Build/Intermediates/testingCpp.build/Debug-iphoneos/testingCpp.build/Objects-normal/armv7/testingCpp.LinkFileList
-dead_strip -ObjC -stdlib=libc++ -fobjc-arc -fobjc-link-runtime -miphoneos-version-min=6.0 -lx264 -framework CoreGraphics -framework UIKit -framework Foundation -Xlinker -dependency_info -Xlinker
/Users/danieldantas/Library/Developer/Xcode/DerivedData/testingCpp-bvawshyhjcybwvadwwwjqxuomjts/Build/Intermediates/testingCpp.build/Debug-iphoneos/testingCpp.build/Objects-normal/armv7/testingCpp_dependency_info.dat -o
/Users/danieldantas/Library/Developer/Xcode/DerivedData/testingCpp-bvawshyhjcybwvadwwwjqxuomjts/Build/Products/Debug-iphoneos/testingCpp.app/testingCpp
</code></pre>

<p>知道如何解决这个问题吗?</p>

<p>谢谢</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>刚刚找到解决办法:</p>

<p>问题在于 import 语句周围缺少 <strong>extern "C"</strong>:</p>

<p>固定版本:</p>

<pre><code>#import &#34;AppDelegate.h&#34;
extern &#34;C&#34; {
    #import &#34;x264.h&#34;
}

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{      
    x264_param_t x264param;
    x264_param_default(&amp;x264param);

    // Override point for customization after application launch.
    return YES;
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 链接错误 Xcode libx264.a ARM,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/20077902/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/20077902/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 链接错误 Xcode libx264.a ARM