2015-01-21 28 views
0

從.m更改爲.mm擴展名時遇到問題。我有一個appdelegate類。最初,它是的.m但是對於包括C++代碼我已經改變它.mm但我在線獲得問題CFArrayRef myArray的= CNCopySupportedInterfaces();和CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray,0));將AppDelegate.m更改爲.mm時發生錯誤

錯誤

1.使用未聲明的標識符CNCopySupportedInterfaces的

2.使用未聲明的標識符的CNCopyCurrentNetworkInfo

-(NSString*)getWifiInfo 
{ 
    CFArrayRef myArray = CNCopySupportedInterfaces(); 
    CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray, 0)); 
    //NSLog(@"Connected at:%@",myDict); 
    NSDictionary *myDictionary = (__bridge_transfer NSDictionary*)myDict; 
    //NSString * BSSID = [myDictionary objectForKey:@"BSSID"]; 
    NSString * SSID = [myDictionary objectForKey:@"SSID"]; 

    return SSID; 
    //NSLog(@"ssid is %@",SSID); 
    // Override point for customization after application launch. 
} 

我已經進口的,但沒有固定我的問題。

+0

可能是因爲應用程序代理不支持C++代碼,請嘗試使用單和調用應用程序中的委託。 – 2015-01-21 12:03:10

回答

-1

您不需要將應用程序委託更改爲.mm。 「CNCopySupportedInterfaces」和「CNCopyCurrentNetworkInfo」都在Framework SystemConfiguration/CaptiveNetwork.h中聲明。另外,如果你要檢查你的方法中使用的所有其他對象,你會發現它們都是Objective-C框架的一部分。

你應該在其他情況下使用.mm,像包括C++庫。情況並非如此。您可以使用C++語法在.m文件無後顧之憂,只要你沒有任何C++的依賴,將需要使用的OBJ-C++編譯器。

改變類回.M,務必將SystemConfiguration框架添加到您的項目(tutorial here),然後在應用程序代理進口CaptiveNetwork:

#import <SystemConfiguration/CaptiveNetwork.h> 

我是能夠建立你的方法我自己的應用程序代表。

相關問題