2012-05-30 4 views
2

Я написал простую функцию, передает компилятор, но не компоновщик.iOS undefined linker ld error

Любая идея, почему?

- (BOOL) connectedToWifi 
{ 

    CFArrayRef myArray = CNCopySupportedInterfaces(); 
    // Get the dictionary containing the captive network infomation 
    CFDictionaryRef captiveNtwrkDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); 

    NSLog(@"Information of the network we're connected to: %@", captiveNtwrkDict); 

    NSDictionary *dict = (__bridge NSDictionary*) captiveNtwrkDict; 
    NSString* ssid = [dict objectForKey:@"SSID"]; 

    if ([ssid rangeOfString:@"WXYZ"].location == NSNotFound || ssid == NULL) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

Это ошибка, я получаю:

Undefined symbols for architecture i386: 
    "_CNCopySupportedInterfaces", referenced from: 
     -[miApp_funcs connectedToWifi] in miApp_funcs.o 
    "_CNCopyCurrentNetworkInfo", referenced from: 
     -[miApp_funcs connectedToWifi] in miApp_funcs.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+1

Похоже, что у вас отсутствует необходимая библиотека или фреймворк, попробуйте добавить инфраструктуру SystemConfiguration к своей цели. – danielbeard

+0

Новичок, как мне это сделать с последним Xcode на льве? – user848106

+0

В боковой панели нажмите на свой проект -> Связанные структуры и библиотеки -> + -> и выберите SystemConfiguration framework – danielbeard

ответ

3

Вы должны подключиться, и #import <SystemConfiguration/SystemConfiguration.h>, чтобы иметь доступ к Пленница сети (CN) классов и функций.

3

Ниже приведены steps-

1) Нажмите проект в области Навигатора

2) Выберите 'цели' Вкладка

3) Нажмите кнопку 'Построить Phases'

4) Выберите ' Link Binary With Libraries '

5) Затем вы можете видеть кнопку «+» внизу в области. Теперь вы можете добавить фреймворк SystemConfiguration, который вы хотите.

#import <SystemConfiguration/SystemConfiguration.h>