macOS 開發 - 使用 route.h 報錯 (Darwin.net.route)
阿新 • • 發佈:2018-11-01
問題場景
獲取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"
編譯失敗。