我在从.m更改为.mm扩展名时遇到问题。我有一个appdelegate课程。最初它是.m,但是为了包含c ++代码,我已将其更改为.mm但我在行 CFArrayRef myArray = CNCopySupportedInterfaces();和CFDictionaryRef myDict = CNCopyCurrentNetworkInfo(CFArrayGetValueAtIndex(myArray,0));
错误
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 :(得分:-1)
您不需要将应用程序代理更改为.mm。 "的 CNCopySupportedInterfaces 强>"和" CNCopyCurrentNetworkInfo "都在框架 SystemConfiguration / CaptiveNetwork.h 中声明。此外,如果要检查方法中使用的所有其他对象,您会发现所有这些对象都是Objective-C框架的一部分。
在其他情况下你应该使用.mm,比如包括一个C ++库。事实并非如此。只要您没有任何需要使用Obj-C ++编译器的C ++依赖项,您就可以在.m文件中使用C ++语法而无需担心。
将类更改回.m,确保将SystemConfiguration框架添加到项目中(tutorial here),然后在Application委托中导入CaptiveNetwork:
#import <SystemConfiguration/CaptiveNetwork.h>
我能够在自己的app委托中构建你的方法。