私は、C++コードにラッパー(Objective-C/C++で書かれた)として機能するフレームワークに入れたいC++プロジェクトを持っています。後でこれをSwiftまたはObjective-Cプロジェクトで、単にフレームワークをアプリケーションに追加するだけで使用できます。すべてのラッパー XcodeでC++プロジェクトのラッパーフレームワークを構築する
- を:私がこれまで達成してきた何
すべてのC++ヘッダー(ファイルディレクトリ構造を保持している)をフレームワークのディレクトリに格納して、フレームワークを使用してアプリケーションで使用できるようにします。私がこれを行うだけでなく、ビルド段階のヘッダーのフィールドに入れるのではない理由は、たくさんのファイルやフォルダがあり、それが現在どのように書かれているのではなく、すべてのヘッダーを
#include "LocalHeader.h"
に変更する必要があるからです#include "CppRootFolder/Subfolder/Header.h"
となります。また、私はC++ファイルを変更せずに保存したいので、これをやっていません。
問題:
すべてが、実際のアプリケーションを構築する場合、Xcodeのは、それがファイル構造内のファイルを見つけることができないと言ってエラーになることを除いてうまく動作するようです。私が何を意味するか説明するために、私は次のようしている:
- をフレームワークの傘ファイルはCppRootFolderで
#include "CppRootFolder/umbrella.h"
(C++傘ファイル) - /umbrella.h、私は
#include "CppRootFolder/Subfolder/Header.h"
いくつかの各1を持っています各サブフォルダ内のヘッダのうち、C++コードのルートフォルダからそれらを参照する他のヘッダが含まれる。この上
私のテイクは:
問題は、コンパイラがC++コードのルートフォルダからヘッダを見つける必要があるということであると私には明らかと思われます。したがって、実際のAppでは、ビルド設定で、$ BUILT_PRODUCTS_DIR/FrameworkName.framework/Headersにヘッダー検索パスを追加します。これは、すべてのヘッダーをスクリプトでコピーした場所です。しかし、ビルドは失敗し、既に定義されている型を認識しないランダムなエラーが多数発生します。
どのように私はこれを動作させることができますか?
おかげ
UPDATE(ログ):
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "Headers/Box2D.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D.h:17:9: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D.h:17:
#import "World.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/World.h:10:9: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/World.h:10:
#import "Box2D/Box2D.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Box2D.h:34:10: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Box2D.h:34:
#include "Box2D/Common/b2Settings.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Common/b2Settings.h:153:8: error: must use 'struct' tag to refer to type 'b2Version'
extern b2Version b2_version;
^
<module-includes>:1:9: note: in file included from <module-includes>:1:
#import "Headers/Box2D.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D.h:17:9: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D.h:17:
#import "World.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/World.h:10:9: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/World.h:10:
#import "Box2D/Box2D.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Box2D.h:35:10: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Box2D.h:35:
#include "Box2D/Common/b2Draw.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Common/b2Draw.h:22:10: note: in file included from /Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Common/b2Draw.h:22:
#include "Box2D/Common/b2Math.h"
^
/Users/luis/Library/Developer/Xcode/DerivedData/Project-dgathvjusrdgslfvqqcvkeqyjzcb/Build/Products/Debug-iphoneos/Box2D.framework/Headers/Box2D/Common/b2Math.h:28:31: error: unexpected type name 'int32': expected expression
int32 ix = *reinterpret_cast<int32*>(&x);
macOSまたはiOS用のアプリを開発していますか? CPUアーキテクチャは同じではありません。ライブラリプロジェクトを作成しようとしましたか?あるいは、C++とObjective-C++のコードを同じアプリケーションプロジェクトに入れましたか? Objective-C++では、**。m **の代わりに**。** **というファイル拡張子がありますか? – JazzSoft
ビルドに問題がある場合は常にコピー貼り付けエラーメッセージが表示されます。理由は2つあります。あなたの問題を理解することは簡単です(私たちはあなたの解釈に頼る必要はありません)。誰かが似たような問題を抱えていると、Googleに簡単になります。 –
iOS用、これはiosアプリプロジェクトに追加されたCocoaタッチフレームワークプロジェクトで、C++とobj-C++コードが一緒にフレームワークプロジェクト内にあり、拡張子はobj-C++のため.mm – luis