Xcodeで、「Cocoaアプリケーション」プロジェクトを作成しました。その依存関係の1つは、C++コードを含むフレームワークです。AppDelegate.mの名前をAppDelegate.mmに変更し、フレームワークを含めました。
プロジェクトのコンパイルに失敗します。問題は、フレームワークのC++ヘッダーファイルがObjective-CまたはCocoaと競合するいくつかのシンボルを使用していることです。
- C ++ヘッダーファイルは、
verify()
およびと呼ばれる関数を定義check()
しています。これは、MacOSX10.8SDKの/usr/include/AssertMacros.hと競合します。 - C ++ヘッダーファイルには
NO
、Objective-Cマクロと競合すると呼ばれる変数が含まれていますNO
。
回避策は、これらの競合を回避するためにフレームワークのC++コードを変更することです。ただし、これは別の組織によって維持されている大規模なC ++プロジェクトであるため、これには時間がかかり、C++プロジェクトの将来の更新で中断する可能性があります。
これらのC++ヘッダーファイルをObjective-C++ではなくC++として扱うようにClang/Xcodeに指示する方法はありますか?