我尝试包括完成网关提取问题。在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"
答案 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项目中即可。它有效;)