为什么<net route.h =“”>可以在IOS6.1模拟器中包含和编译而无法在实际的iphone中编译?</net>

时间:2014-03-04 03:21:11

标签: ios iphone objective-c

我尝试包括完成网关提取问题。在xcode IOS模拟器编译过程中,它可以包含在内,但是在真正的IOS机器中它不能。我只能在项目中放一个route.h的副本,它真的可以在真机上运行。但这在模拟器中带来了另一个问题。它表示重新定义了诸如rt_metrics,rtstat之类的结构,并提供了一个信息:'struct rt_metricx'的定义必须在模块'Darwin.net.route'之前导入'才需要'。 我该怎么做才能解决这个问题? 这是我在文件中包含的头文件。

#include "route.h"
//#include <net/route.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <netinet/in.h>
#include <stdlib.h>
#include <sys/sysctl.h>
#include <string.h>
#include <net/if.h>
#include <ifaddrs.h>
#include <net/if_dl.h>
#include "resolv.h"

3 个答案:

答案 0 :(得分:3)

由于某些原因,头文件仅存在于iOS模拟器SDK中,而不存在于iOS SDK中。

您可以在项目中放置头文件的副本,并有条件地将其包含在iOS中。

- 编辑 -

#if TARGET_IPHONE_SIMULATOR
#include <net/route.h>
#else
#include "route.h"
#endif

答案 1 :(得分:3)

在我意识到如果你#import两个标题代替你甚至不需要担心#if后卫之前,我就永远与之搏斗。

#import <net/route.h>
#import "route.h"

答案 2 :(得分:2)

您可以在Mac中的 / usr / include / net 文件夹中找到 route.h 文件。只需将其复制到您的xcode项目中即可。它有效;)