簡體   English   中英

在框架錯誤中包含非模塊化標頭

[英]Include of non-modular header inside framework error

我意識到這是一個常見的錯誤,已經被問過幾次了,但是在根據他人的答案嘗試了幾種不同的方法后,我無法解決它。

我正在創建一個使用另一個第三方框架的框架項目(Obj-c)。 在MyFramework的總括標題中,我具有第三方框架的import語句。 當我打包框架並將其包含在另一個iOS項目中時,由於該錯誤而無法構建。

我嘗試過的事情:

  • 打開“在框架模塊中允許非模塊化包含”
  • 將第三方框架的傘形標題添加為“公共”標題

請告知此處缺少的內容。 提前致謝!

這是確切的錯誤:

在框架模塊'MyFramework.TestManager'中包含非模塊化標頭:'/TestApp/WindowsAzureMessaging.framework/Headers/WindowsAzureMessaging.h'

另外,從路徑看來,它似乎正在嘗試在TestApp項目中進行搜索,而應該從Framework進行引用。

我將Umbrella標題中的Azure Messaging Framework導入了,如下所示:

#import <WindowsAzureMessaging/WindowsAzureMessaging.h>

我能夠重現您的錯誤。 我看起來WindowsAzureMessaging標頭和它引用的所有其他標頭都不能用於模塊化框架傘標頭,因為相對於框架,它使用“用戶”導入而不是“系統”導入,而且它沒有modulemap文件。

您有幾種選擇:

  1. 修改他們的代碼並將其構建為模塊(使其“模塊化”)。
  2. 不要將其包含在傘形標題中(避免從那里引用內容),而是將其鏈接並直接在應用程序和您的框架中使用。
  3. 與其將文件框架用作單獨的實體,不如將其源代碼(m和h文件)提取(復制)並編譯到框架中,然后將某些標頭公開為自己的標頭。

我認為選項1是正確的方法。 這並不難,如果您能夠做到這一點,請考慮對他們的回購提出拉動請求,因為這將使所有人受益。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM