Xcode 编译链接问题汇总(持续更新中....)
2015-05-27 16:25
435 查看
编写程序时,经常会用到别人已经写好的模块(模块的形式不同:有些是以静态库方式提供,有些提供C语言的接口,有些提供C++的接口).所以在链接的时候经常遇到一些问题,特记录
首先要明白一个道理:
.m文件只能识别OC,C语言; 即模块是OC或C语言编写的,就一般使用.m文件就可以了.
.mm文件是针对OC,C和C++三语音的; 注意模块是C++实现的,就不能在使用.m文件,要使用.mm文件(cpp文件没用过,不知情况了)
以下是一些具体编译错误汇总:
问题1.
或者
解决方法:把.m文件修改成.mm文件
问题2
"_compress", referenced from:
“_uncompress", referenced from:
"_compress2", referenced from:
"_inflateReset", referenced from:
"_inflateInit_", referenced from:
"_inflateEnd", referenced from:
"_inflateInit2_", referenced from:
与压缩,解压缩有关的链接问题,都可以通过 -lz解决.
问题3
在音频编解码的时候,在使用G711a格式的时候,原始文件是G711.c.这个在Xcode的默认编译器中是有错误的,
解决方式:需要修改成G711.cc
问题4
解决方式:添加一个libstdc++.dylib
问题5
解决方式:
问题5:
#ifdef ShowLog
#define DLog(...) NSLog(__VA_ARGS__)
#else
#define DLog(...)
#endif
///
+ (void)modifyPassword:(NSString *)password
oldPassword:(NSString *)oldPassword
success:(void (^)(NSDictionary *data))success
failure:(void (^)(NSDictionary *data))failure
{
password = [password stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[[WebManager sharedInstance] Request:[NSString stringWithFormat:@"id=%@&password=%@&oldpassword=%@",
@"11",
@"11",
@"111"]
success:success
failure:failure];
}
AFJSONRequestOperation *operation =
[AFJSONRequestOperation
JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSDictionary *data = (NSDictionary *)JSON;
NSString *result = [data objectForKey:@"result"];
if ([result isEqualToString:@"ok"]) {
if (success) {
success(data);
}
}
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSDictionary *data = [[NSDictionary alloc]
initWithObjects:[NSArray arrayWithObject:@"001"]
forKeys:[NSArray arrayWithObject:@"result"]];
if (failure) {
failure(data);
}
}];
/////
dispatch_group_t _group;
dispatch_queue_t _eventQueue;
@property (strong, nonatomic) NSMutableArray *eventObersvers;
_group = dispatch_group_create();
_eventQueue = dispatch_queue_create("com.111.eventQueue", NULL);
_eventObersvers = [[NSMutableArray alloc] init];
- (void)registerEventObserver:(id)observer {
dispatch_group_async(_group, _eventQueue, ^{
[self.eventObersvers addObject:observer];
});
}
- (void)unRegisterAllEventObserver {
dispatch_group_async(_group, _eventQueue, ^{
[self.eventObersvers removeAllObjects];
});
}
首先要明白一个道理:
.m文件只能识别OC,C语言; 即模块是OC或C语言编写的,就一般使用.m文件就可以了.
.mm文件是针对OC,C和C++三语音的; 注意模块是C++实现的,就不能在使用.m文件,要使用.mm文件(cpp文件没用过,不知情况了)
以下是一些具体编译错误汇总:
问题1.
或者
解决方法:把.m文件修改成.mm文件
问题2
"_compress", referenced from:
“_uncompress", referenced from:
"_compress2", referenced from:
"_inflateReset", referenced from:
"_inflateInit_", referenced from:
"_inflateEnd", referenced from:
"_inflateInit2_", referenced from:
与压缩,解压缩有关的链接问题,都可以通过 -lz解决.
问题3
在音频编解码的时候,在使用G711a格式的时候,原始文件是G711.c.这个在Xcode的默认编译器中是有错误的,
解决方式:需要修改成G711.cc
问题4
解决方式:添加一个libstdc++.dylib
问题5
解决方式:
问题5:
#ifdef ShowLog
#define DLog(...) NSLog(__VA_ARGS__)
#else
#define DLog(...)
#endif
///
+ (void)modifyPassword:(NSString *)password
oldPassword:(NSString *)oldPassword
success:(void (^)(NSDictionary *data))success
failure:(void (^)(NSDictionary *data))failure
{
password = [password stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
[[WebManager sharedInstance] Request:[NSString stringWithFormat:@"id=%@&password=%@&oldpassword=%@",
@"11",
@"11",
@"111"]
success:success
failure:failure];
}
AFJSONRequestOperation *operation =
[AFJSONRequestOperation
JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSDictionary *data = (NSDictionary *)JSON;
NSString *result = [data objectForKey:@"result"];
if ([result isEqualToString:@"ok"]) {
if (success) {
success(data);
}
}
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
NSDictionary *data = [[NSDictionary alloc]
initWithObjects:[NSArray arrayWithObject:@"001"]
forKeys:[NSArray arrayWithObject:@"result"]];
if (failure) {
failure(data);
}
}];
/////
dispatch_group_t _group;
dispatch_queue_t _eventQueue;
@property (strong, nonatomic) NSMutableArray *eventObersvers;
_group = dispatch_group_create();
_eventQueue = dispatch_queue_create("com.111.eventQueue", NULL);
_eventObersvers = [[NSMutableArray alloc] init];
- (void)registerEventObserver:(id)observer {
dispatch_group_async(_group, _eventQueue, ^{
[self.eventObersvers addObject:observer];
});
}
- (void)unRegisterAllEventObserver {
dispatch_group_async(_group, _eventQueue, ^{
[self.eventObersvers removeAllObjects];
});
}
相关文章推荐
- Xcode 编译链接问题汇总(持续更新中....)
- C++,C 编译问题汇总(持续更新)
- UI控件问题和XCode编译警告和错误解决方法集锦 (持续更新ing)
- Jenkins自动编译常见问题汇总(持续更新)
- iOS11 Xcode9正式版问题汇总以及新特性(持续更新中....)
- 程序编译、链接相关问题(持续更新中......)
- Xcode常见编译错误以及解决方法汇总(持续更新)
- Xcode编译异常和警告汇总(持续更新中)
- Svn遇到的问题汇总(持续更新)
- Android开发问题汇总(持续更新)
- C#.NET开发中常用的技术问题汇总(持续更新)
- OpenCV常见问题汇总(持续更新)
- Ubuntu系统常见问题汇总(持续更新)
- vsftpd安装问题汇总(持续更新。。)
- android开发问题汇总(持续更新中)
- 运维问题汇总(持续更新)
- VC下编译和链接常出现的问题汇总
- 【常见问题汇总--持续更新】Keystone常见问题
- sublime 使用中一些遇到问题解决方法和技巧汇总(持续更新)
- React Native常见问题汇总(持续更新ing)