2013-11-19 1 views
2

Я пытаюсь построить libx264.a работать на моем iphone 4s (под управлением IOS 6.1.3)ссылка ошибка Xcode libx264.a ARM

Я строю его, используя терминальное приложение MacOSX 10.9:

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 

Какой guives мне выход:

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 

Тогда я бегу 'сделать', и это создает архив libx264.a.

До сих пор так хорошо.

На моей Xcode (версия 5.0.2 (5A3005)) Приложение I набор:

1) Построить Настройки -> Header Search Path -> x264 родительский каталог (../x264)
2) Построить Фаз -> Link Library с Binaries -> Добавить Другое ... (../x264/libx264.a)
3) построить Настройки -> Другие флаги компоновщика: -ObjC

В моей AppDelegate.mm:

#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; 
} 

... 

Когда я пытаюсь чтобы запустить его на устройстве, я получаю ошибку:

Undefined symbols for architecture armv7: 
    "x264_param_default(x264_param_t*)", referenced from: 
    -[AppDelegate application:didFinishLaunchingWithOptions:] 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) 

Здесь команда вызывается с помощью Xcode:

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 

Любая идея, как это исправить?

Благодаря

+0

Можете ли вы запустить 'lipo -info' в созданной библиотеке? Похоже, что он не собирался для ARMv7. –

+0

lipo -info libx264.a входной файл libx264.a не является жирным файлом Нежирный файл: libx264.a is architecture: armv7 – user1558688

+0

Если вы запустите 'nm {library} | grep param_default', он появляется? Вполне возможно, что конфигурация, которую вы используете, не позволяет использовать эту функцию. –

ответ

1

Просто нашел решение:

Проблема была недостающий ехЬегп "C" окружая оператор импорта:

Фиксированный версия:

#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; 
} 
+0

Спасибо, человек, которого вы экономите мой день! –

 Смежные вопросы

  • Нет связанных вопросов^_^