Ошибка Apple Mach-O Linker: Неопределенные символы для архитектуры armv7

Хотя здесь уже есть много подобных вопросов, я до сих пор не могу решить эту проблему.

Я разрабатываю некоторое приложение IOS, и большая часть файла написана Object-C. Но мне нужно использовать какой-то алгоритм о БПФ, поэтому я создал файл C (включая файл главы), чтобы вычислить его. Когда я попытался скомпилировать его в IOS Device, у меня появилась ошибка Apple Mach-O Linker.

Потому что я могу опубликовать любое изображение, поэтому я копирую журнал здесь. Извини за это. это выглядит так:

Ld /Users/nekonosukiyaki/Library/Developer/Xcode/DerivedData/Decode-eqksrmyvutoiidgpubzmnxbofxmr/Build/Products/Debug-iphoneos/Decode.app/Decode normal armv7 cd /Users/nekonosukiyaki/Mr.WORK/MyProjects/IOS/Decode export IPHONEOS_DEPLOYMENT_TARGET=8.1 export 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/iPhoneOS8.1.sdk -L/Users/nekonosukiyaki/Library/Developer/Xcode/DerivedData/Decode-eqksrmyvutoiidgpubzmnxbofxmr/Build/Products/Debug-iphoneos -F/Users/nekonosukiyaki/Library/Developer/Xcode/DerivedData/Decode-eqksrmyvutoiidgpubzmnxbofxmr/Build/Products/Debug-iphoneos -filelist /Users/nekonosukiyaki/Library/Developer/Xcode/DerivedData/Decode-eqksrmyvutoiidgpubzmnxbofxmr/Build/Intermediates/Decode.build/Debug-iphoneos/Decode.build/Objects-normal/armv7/Decode.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -dead_strip -stdlib=libc++ -fobjc-link-runtime -miphoneos-version-min=8.1 -Xlinker -dependency_info -Xlinker /Users/nekonosukiyaki/Library/Developer/Xcode/DerivedData/Decode-eqksrmyvutoiidgpubzmnxbofxmr/Build/Intermediates/Decode.build/Debug-iphoneos/Decode.build/Objects-normal/armv7/Decode_dependency_info.dat -o /Users/nekonosukiyaki/Library/Developer/Xcode/DerivedData/Decode-eqksrmyvutoiidgpubzmnxbofxmr/Build/Products/Debug-iphoneos/Decode.app/Decode Undefined symbols for architecture armv7: "rdft(int, int, double*, int*, double*)", referenced from: ___31-[ViewController pushStartBTN:]_block_invoke in ViewController.o ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Я плохо разбираюсь в английском, но я стараюсь сделать все возможное, чтобы вы знали о моей проблеме. Еще раз спасибо.

(a) в моем файле .h:

 void cdft(int n, int isgn, double *a, int *ip, double *w); void rdft(int n, int isgn, double *a, int *ip, double *w); void ddct(int n, int isgn, double *a, int *ip, double *w); void ddst(int n, int isgn, double *a, int *ip, double *w); void dfct(int n, double *a, double *t, int *ip, double *w); void dfst(int n, double *a, double *t, int *ip, double *w); 

(b) в .c файле

 void rdft(int n, int isgn, double *a, int *ip, double *w) { void makewt(int nw, int *ip, double *w); void makect(int nc, int *ip, double *c); ... 

(c) в .m файле

 - (IBAction)pushStartBTN:(UIButton *)sender { Novocaine *audioManager = [Novocaine audioManager]; self.audioManager = audioManager; [self.audioManager setInputBlock:^(float *newAudio, UInt32 numSamples, UInt32 numChannels) { // Now you're getting audio from the microphone every 20 milliseconds or so. How's that for easy? // Audio comes in interleaved, so, // if numChannels = 2, newAudio[0] is channel 1, newAudio[1] is channel 2, newAudio[2] is channel 1, etc. // NSLog(@"newAudio: %f, numSamples: %u, numChannnels: %u",*newAudio,(unsigned int)numSamples,(unsigned int)numChannels); double data[numSamples * 2]; int *ip = (int *)malloc(sizeof(int) * (2 + sqrt((double)(numSamples*2)))); double *w = (double *)malloc(sizeof(double) * (numSamples)); ip[0] = 0; double *spectrum = (double *)malloc(sizeof(double)*512); if (numChannels == 2) { NSLog(@"2 channels and quit"); } else { for (int i=0; i<numSamples; i++) { data[i<<1] = newAudio[i] * _window.win[i]; data[(i<<1)+1] = 0; } rdft(numSamples*2, 1, (double *)data, ip, w); } for (int i=400; i<470; i++) { spectrum[i] = 10*log10(pow(data[i<<1], 2)+pow(data[(i<<1)+1], 2)); } Threshold *threshold = [[Threshold alloc]initWithTrig:spectrum[450] :spectrum[454] :0.9]; [threshold calThresByIREF]; NSLog(@"threshold: %f",threshold.threshold); }]; [self.audioManager play]; } 

(d) Я не могу скомпилировать .c, но функция в .c файле была написана профессором, и она может хорошо работать, если я использую ее только в программе на C.

так как код так длинный, что я не могу его копировать здесь. Мне так жаль. Большое спасибо.

Interesting Posts

UIUserNotificationType устарел в iOS10 Swift 3.0

Почему мой CLLocationManager не отвечает на startMonitoringForRegion?

ios – редактировать NSMutableAttributedString, сохраняя свойства HTML

Как работает UINavigationController и UIViewController?

Уменьшение громкости iPod для воспроизведения звука приложения (например, родного SMS-приложения)

Создание многостраничного PDF-файла в объекте-c

iOS Swift: тип сообщения «DataBase» получателя, например, представляет собой декларацию о переходе для кода Objective C

Почему NSNumber указывает на тот же адрес, когда значение равно?

Заработа трольЦЦЦЕНЦ АПЕНЕН Нуль Нуль Нуль Нуль Нуж Нуль Нужмайкомль Нуль Нуль Нуль Нуль Нуль Нуль,

Как я могу сделать свой iPhone для iPhone 5 совместимым?

Обратный вызов из CBCentralManagerDelegate для извлечения CBPeripheral на IOS8

Не удается удалить или остановить AVPlayer

Удалите аннотации с карты и замените их обновленными аннотациями (qTree)

при покупке приложения, SKPaymentTransactionStatePurchased retries

Уведомление об окончании подписки IOS

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.