web-dev-qa-db-ja.com

「X」への参照があいまいです

プロジェクトをいくつか変更した後、突然このビルドエラーが発生しました。

「kCGImageAlphaPremultipliedLast」への参照があいまいです

Reference is ambiguous error screenshot

エラーを確認すると、4回参照されていることがわかります。

Xcode error screenshot

誰かがこれがどのように起こり得るのか、そしてどのようにしてこれを引き起こしているのかをどのようにして理解できるのか教えてもらえますか? CoreGraphicsから明示的に何もインポートせず、Prefixファイルは「Foundation.h」といくつかの自作マクロのみをインポートします。ただし、純粋なCコードを含むいくつかのヘッダーをインポートしていますが、これらはすべて次のようなものにカプセル化されています。

#ifndef __MYCCODE_H
#define __MYCCODE_H
// imports here
// c code here
#endif

これは、LLVM 5.1を使用するXcode 5で発生します

編集:これはこのプロジェクトの別の問題のようです。このコード行をコメントにすると、別のエラーが発生します。

不正な形式または破損AST file: 'Unable to load module "/Users/xxx/Library/Developer/Xcode/DerivedData/ModuleCache/1NHZ5MC2OSMJV/CoreImage.pcm":module file out of date'

モジュールを削除して再度追加しても、効果はありませんでした。派生データを削除しても効果がありませんでした。このエラーは、作業中のコミットに戻ったときにも表示されます。

24
HellGate

新しいプロジェクトを作成し、このプロジェクトにすべてを対処した後、ビルドは成功しましたが、この「不正または破損したASTファイル」エラーが何度か発生しましたが、次の方法で解決できます。

  • プロジェクトをきれいにする
  • '〜/ Library/Developer/Xcode/DerivedData/ModuleCache /'内のすべてを削除する(オーガナイザーウィンドウ内のボタンは私には機能しませんでした)
  • もう一度掃除する
  • プロジェクトをビルドする

その後、私は時々この修正を行わなければならないことを除いて、それはうまくいきます

私はまた、古いプロジェクトとの差分を作成しました。多くのフレームワークや他の古いものがテストから動かなくなっているようですので、プロジェクト設定ファイルで古いものを確認してください。

私はxcodeと私はいつか友達になることができると思いました。ないと思います...

18
HellGate

これはおそらく次のようにインポートすることです:

#import "xxxx.h"

私はこれを通してそれを修正します:

#import <xxxx/xxxx.h>

15
NSKevin

ヘッダーファイルを2回インポートすると、この問題が発生します。それらの1つを削除すると、問題は解消します。

13
Jibeex

まだ問題に苦しんでいる人のために:提案された解決策のどれも私の場合うまくいきませんでした。私はすべてのフレームワークをCarthageを使用してコンパイルしており、メインプロジェクトでも使用されているフレームワークを使用しているフレームワークのヘッダーをインポートすると、メインプロジェクトでこれらのエラーが発生していました。最終的にそれを解決したのは、メインプロジェクトの「モジュール」を無効にすることでした。 enter image description here

9
Matan Guttman

ここでいくつかの解決策はいいですが、use_frameworks!あなたがそれがこの問題を起こさせたとしても、私が今必要としているのはまさにそれです。しかし、フレームワークを使用していて、ヘッダーがこのように2回参照されていると、ビルドが好きではないようです

#import "TSMessage.h"
#import "TSMessage+CSExtension.h"

しかし、このようにコンパイルすると問題が解決します

#import "TSMessage+CSExtension.h"
1
Renetik

Use_frameworksを削除してください!ポッドファイルから、あいまいな問題を修正します。

1
furkan

使用する

_#import "anyviewcontroller.h"
_

モジュールの代わりに

_@import anymodule;
_

私はLGSideMenuControllerを使用していますが、初めて統合するとうまく機能しますが、しばらくしてこのエラーが発生した理由がわかりません。

だから私はモジュール_@import LGSideMenuController;_をヘッダーファイルに置き換えましたこのように_#import "UIViewController+LGSideMenuController.h"_

エラーはなくなります。

0
Mahesh Cheliya

ビルドレポートを散らかす同じ警告が表示されました(ただし、三角形の下のみ)。結局、私にとってうまくいったのは、次のすべての使用を保証することでした:

#import <Module/Module.h> 

アプリで置き換えられました:

@import Module;

これで、これらの迷惑な警告はすべてなくなりました。

0
David H