2016-04-26 53 views
0

我正在研究一個自然依賴於其他框架的框架。爲了幫助我的用戶的整合過程中,我補充說,將警告他們,如果某些框架沒有聯繫宏:Xcode:測試框架是否鏈接到項目

#ifndef _SYSTEMCONFIGURATION_H 
#warning "The SystemConfiguration framework not found in project or not included in precompiled header, please make sure that it does" 
#endif 

問題是,我看到這個警告,即使我鏈接SystemConfiguration到我的項目。

我在做什麼錯?謝謝!

回答

0

用戶應該在他的應用程序的某個地方#import <SystemConfiguration/SystemConfiguration.h>之前,包括您的框架的標題。 _SYSTEMCONFIGURATION_H只是一個預處理器指令,在SystemConfiguration.framework內部聲明,所以你需要包含它的頭,只是連接二進制是不夠的。

+0

謝謝,但它引發了另一個問題:如果我導入傘頭,並且我從測試應用中取消了SystemConfiguration的鏈接,那麼我從來沒有得到任何錯誤。 – Yotam

+0

@Yotam,在SystemConfiguration上進行框架中繼嗎?那麼你可以將它與SystemConfiguration連接起來,而且你很好。 鏈接在編譯後進行,所以編譯器不知道在完成任務後哪些框架將被鏈接,因此無法在編譯階段檢查它。 也有在運行時檢查它的選擇,像這樣的東西: '''BOOL isFrameworkLoaded =(!NSClassFromString(@ 「MyClassNameFromTheFramework」)=無);''' –

+0

@ andery.s我會就像Xcode一樣,如果可以的話,會引發鏈接時錯誤。我已經使用'NSClassFromString',就像你在一些框架中所建議的那樣,但是在SystemConfiguration這樣的框架中,我沒有看到任何定義好的類,即使在搜索完所有的頭文件之後。它主要是C結構和變量。 – Yotam