web-dev-qa-db-ja.com

@importは解析の問題を引き起こします:「モジュールをビルドできませんでした」

Xcode 6.3で更新した後、プロジェクトで奇妙なことが見つかりました。

以下のコードは、「モジュール 'AgendaFramework'をビルドできませんでした」という解析の問題を引き起こします。AgendaFrameworkは、ios8のカスタム埋め込みフレームワークです。

@import MyEmbededFramework;

エラーマーカーは次のようになります。

error

インデックス作成中に問題が発生します。エラーや警告なしで、建物全体を正常に実行できます。ビルド、アーカイブ、デバイスでの実行、展開、App Storeへの提出ができます。

ただし、拡張機能に属するクラスを編集すると、エラーマーカーが表示されます。組み込みフレームワークに明示的にリンクされた拡張機能(ウィジェット)。 (@importステートメントを使用するとき、それを行う必要がないことを知っています。)

この状態では、有効なコンテンツアシスタントを受け取ることができませんでした。

Importステートメントを古いスタイルに置き換えた後、問題はなくなりました。

#import <AgendaFramework/AgendaFramework.h>

この問題を引き起こすプロジェクトと非常によく似たトポロジを持つ他のプロジェクトがいくつかありますが、大丈夫です。この問題の原因となるプロジェクトは1つだけです。すべての詳細ビルド設定を比較しましたが、手がかりが見つかりませんでした。

私は試した:

  • 派生データを削除する
  • フルクリーン
  • リブート

どんな手がかりも歓迎します。ありがとう!

35
jeeeyul

電源を入れているように見えます: フレームワークモジュールに非モジュールインクルードを許可する 私のためにこの問題を解決しました。

31
kwz

こんにちは。これは、フレームワークヘッダーで公開しているファイルも公開する必要があるためです。

Change from "project" to "public"

2
vivek

この問題は、。xcodeprojファイルと同じフォルダーにフレームワークを追加する、サブフォルダーなどを追加しないことで解決できる場合があります。

質問のコメントとして指摘しているJonnyの功績。

2
inigo333

私のために働いたソリューション:システムスタイルのインポートに対するフレームワークヘッダーファイルの向きの勤勉... #import <CoreXLib/CoreThreads.h> 物語:

私の場合、フレームワークと脆弱なXcodeプロジェクトのパス名を介して、コードイーザー全体の一般的なデザインパターンの一部を再利用できることが明らかになったため、私が構築したフレームワークはいくつかのコードベースの組み合わせから来ました。

フレームワーク「CoreXLib」を構築したとき、Xcodeに典型的なCocoaフレームワークに再編成しました。インポートを次から変更しました:

    #import "CoreTypeAliases.h"    // project local style   

    #import <CoreXLib/CoreTypeAliases.h>    // system or framework style

適切に。レゴフォルダーにパブリックヘッダーを含むCoreXLib.frameworkを使用したいくつかのプロジェクトが機能しました...

残念ながら、公開されていたヘッダーの一部は完全には更新されませんでした。フレームワークのクラスは、ローカルスタイルでうまく構築されています。それを使用するすべてのプロジェクトはこの時点まで機能しましたが、そうではなかったものに遭遇しました...エラーは@jeeeyulによって指摘されました

そのため、このスレッドを見つけて@kwzの解決策を見つけ、それが私の場合は何もしないようにした後、この問題を解明しようとしていたときにコードを磨き上げることにしました。研磨では、#importsは、Xcodeの検索および置換で必要なように変更されませんでした。いくつかの手詰まりの時間...

all CoreXLibプロジェクトヘッダー(公開ヘッダーだけでなく、自己防衛)のallの参照の修正後、問題に戻りました... 埋め込み ...という問題のあるプロジェクトにCoreXLib.frameworkを新たに準拠させ、問題は解消されました! Allow Non-modular Includes...フレームワークプロジェクトとフレームワークをリンクしたプロジェクトの両方で、両方とも「いいえ」でした。 「はい」と「いいえ」の両方に反転しても、いくつかのテストで違いはありませんでした。 のみその他の変更は#import "..."から#import <CoreXLib/...>変更。

だから時々Apple ????がバグをノックする???????? off ...

1
William Cerniuk

あなたはこれを試すことができます、それは私の仕事です。プロジェクトに関するDerivedDataディレクトリを削除します。 ステップバイステップ

0
lingyfh

今日、これらの手順でこの問題を解決しました:

  1. スキーマ「MyEmbededFramework」を選択しました
  2. [Command + B]を押してビルドします
  3. ビルドフェーズパネルから、「MyEmbededFramework.framework」を「バイナリとライブラリをリンク」に追加します

プロジェクトをビルドしようとすると、問題はすぐに消える可能性があります。

0
Luo Lun