@isxmg wrote:
在几天前购买了iOS应用逆向工程这本书,开始学习,在搭建these环境就卡了一天,按照书上说的和现在的区别有点大。
而后今天在4.1部分又卡了,现在的these版本,nic.pl之后是这样的[1.] iphone/activator_event [2.] iphone/application_modern [3.] iphone/cydget [4.] iphone/flipswitch_switch [5.] iphone/framework [6.] iphone/ios7_notification_center_widget [7.] iphone/library [8.] iphone/notification_center_widget [9.] iphone/preference_bundle_modern [10.] iphone/tool [11.] iphone/tweak [12.] iphone/xpc_service
选择第二个创建application工程,而后打开iOSRETargetApp目录,发现并没有.mm后缀格式的文件,选择一个相似的RootViewController.m 进行编写代码,打开后发现有内容,清空,写入书本上的内容,完成之后make package编译打包
报错如下,求教咋处理这个,百度谷歌未果。> Making all for application iOSRETargetApp… ==> Copying resource directories into the application wrapper… ==> Compiling XXRootViewController.m (armv7)… XXRootViewController.m:56:1: error: unknown type name 'class'; did you mean 'Class'? class CPPClass ^~~~~ Class /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS10.2.sdk/usr/include/objc/objc.h:38:28: note: 'Class' declared here typedef struct objc_class *Class; ^ XXRootViewController.m:56:15: error: expected ';' after top level declarator class CPPClass ^ ; 2 errors generated. make[3]: *** [/Users/justpl/iosretargetapp/.theos/obj/debug/armv7/XXRootViewController.m.02d919b6.o] Error 1 make[2]: *** [/Users/justpl/iosretargetapp/.theos/obj/debug/armv7/iOSRETargetApp.app/iOSRETargetApp] Error 2 make[1]: *** [internal-application-all_] Error 2 make: *** [iOSRETargetApp.all.application.variables] Error 2
下面是XXRootViewController.m中的代码
> #import "XXRootViewController.h" > @implementation XXRootViewController { > NSMutableArray *_objects; > } > - (void)loadView { > [super loadView]; > _objects = [[NSMutableArray alloc] init]; > self.title = @"Root View Controller"; > self.navigationItem.leftBarButtonItem = self.editButtonItem; > self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButtonTapped:)] autorelease]; > } > - (void)addButtonTapped:(id)sender { > [_objects insertObject:[NSDate date] atIndex:0]; > [self.tableView insertRowsAtIndexPaths:@[ [NSIndexPath indexPathForRow:0 inSection:0] ] withRowAnimation:UITableViewRowAnimationAutomatic]; > } > #pragma mark - Table View Data Source > - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { > return 1; > } > - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { > return _objects.count; > } > - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { > static NSString *CellIdentifier = @"Cell"; > UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; > if (!cell) { > cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; > } > NSDate *date = _objects[indexPath.row]; > cell.textLabel.text = date.description; > return cell; > } > - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { > [_objects removeObjectAtIndex:indexPath.row]; > [tableView deleteRowsAtIndexPaths:@[ indexPath ] withRowAnimation:UITableViewRowAnimationAutomatic]; > } > #pragma mark - Table View Delegate > - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { > [tableView deselectRowAtIndexPath:indexPath animated:YES]; > } > class CPPClass . //代码都删除了。只剩下一个类的声明上面的都是自动生成的 > { > public: > void CPPFcuntion(const char*); > }; > @end
Posts: 1
Participants: 1