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='-no-integrated-as -arch armv7'
--extra-ldflags="-L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk/usr/lib/system -arch armv7"
--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 "AppDelegate.h"
#import "x264.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
x264_param_t x264param;
x264_param_default(&x264param);
// Override point for customization after application launch.
return YES;
}
...
</code></pre>
<p>当我尝试在设备上运行它时出现错误:</p>
<pre><code>Undefined symbols for architecture armv7:
"x264_param_default(x264_param_t*)", 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 "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/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 "AppDelegate.h"
extern "C" {
#import "x264.h"
}
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions: (NSDictionary *)launchOptions
{
x264_param_t x264param;
x264_param_default(&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]