Xcode 编译链接问题汇总(持续更新中....)
2016-03-25 18:26
609 查看
1,。。此文转载自。nogodoss
编写程序时,经常会用到别人已经写好的模块(模块的形式不同:有些是以静态库方式提供,有些提供C语言的接口,有些提供C++的接口).所以在链接的时候经常遇到一些问题,特记录
首先要明白一个道理:
.m文件只能识别OC,C语言; 即模块是OC或C语言编写的,就一般使用.m文件就可以了.
.mm文件是针对OC,C和C++三语音的; 注意模块是C++实现的,就不能在使用.m文件,要使用.mm文件(cpp文件没用过,不知情况了)
以下是一些具体编译错误汇总:
问题1.
![](http://img.blog.csdn.net/20150527162312341?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm9nb2Rvc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
或者
![](http://img.blog.csdn.net/20150527162331071?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm9nb2Rvc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
解决方法:把.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解决.
![](http://img.blog.csdn.net/20150527162448558?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm9nb2Rvc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
问题3
在音频编解码的时候,在使用G711a格式的时候,原始文件是G711.c.这个在Xcode的默认编译器中是有错误的,
解决方式:需要修改成G711.cc
问题4
![](http://img.blog.csdn.net/20150605172312504?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm9nb2Rvc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
解决方式:添加一个libstdc++.dylib
问题5
![](http://img.blog.csdn.net/20150605172514278?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm9nb2Rvc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
解决方式:
![](http://img.blog.csdn.net/20150605172450652?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbm9nb2Rvc3M=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
问题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];
});
}
编写程序时,经常会用到别人已经写好的模块(模块的形式不同:有些是以静态库方式提供,有些提供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];
});
}
相关文章推荐
- DOT资源链接
- JavaCodeTra 猴子选猴王 约瑟夫循环
- 基于微信的域名交易系统(数据库结构设计)
- C++练习题目记录
- LC102 Binary Tree Level Order Traversal
- 《将博客搬至CSDN》
- 移动端前端UI库—Frozen UI、WeUI、SUI Mobile
- mac 访问局域网服务器地址
- JQuery倒计时
- Android开源项目集合
- python None与Null
- 基于微信的域名交易系统(事件流程图)
- 关于Davlik解释器的一些思考
- 通过MapReduce进行电影推荐Movie Recommendations and More via MapReduce and Scalding
- git初体验(三)git分支
- bzoj 2843 极地旅行社(LCT)
- iOS UIWebView打电话
- 一看就懂的ReactJs入门教程(精华版)
- 實驗指導書
- 记录--关于Jquery uploadify 不能动态传值的问题(java)