1. 程式人生 > >macOS 開發 - 使用 route.h 報錯 (Darwin.net.route)

macOS 開發 - 使用 route.h 報錯 (Darwin.net.route)


問題場景

獲取gateway 會使用到 route.h

iOS 開發中一般這樣引用:

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

但是做Mac 應用時,如此呼叫會報很多錯誤,比如

Use
of undeclared identifier 'RTF_GATEWAY' Use of undeclared identifier 'RTAX_MAX' Type 'struct rt_metrics' has incompatible definitions in different translation units Definition of 'rt_metrics' must be imported from module 'Darwin.net.route' b

解決方法:

如下步驟:
1、 刪除專案中的route.h 檔案;
2、如下引用 route.h

#include <net/route.h>

3、將應用 route 的C 檔案,type 改為 Objective-C source

這裡寫圖片描述

編譯,通過


做的嘗試

嘗試1:引入 Darwin 相關框架 libdarwin, 報錯:

cannot link directly with /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.13.sdk/usr/lib/system/libsystem_darwin.tbd.  Link against the
umbrella framework 'System.framework' instead. for architecture x86_64

再次引入 libSystem,還是編譯失敗;


嘗試2:只引入 route.h

#include "route.h"

編譯失敗。