私はあなたの問題をはっきりと記述しようとしていますので、少し時間がかかるかもしれません。いくつかの提案を提供する。ありがとう。「.mm」ファイルを追加せずにobjective-C++をコンパイルするためのxCode 4の設定方法
私はライブラリープロジェクトを持っています。MyCppLib
にレガシーC++コードが含まれています。このプロジェクトにアダプタークラスを追加して、他のプロジェクトでobjective-C++を使用して使用できるようにします。以下は、MyCppLib
プロジェクトの概要です。
プロジェクトMyCppLib
- 一部のレガシーC++コード
- Adapter.h
- Adapter.mm私は別のプロジェクトを持っている
は、のは、MyCppLib
を使用Main
プロジェクト、それを呼びましょう静的ライブラリとしてのプロジェクト。 xCode 4を使用してMyCppLib
をコンパイルし、libMyCppLib.a
を取得し、xCode 4にMain
プロジェクトを設定してMain
プロジェクトにリンクします。以下は、Main
プロジェクトの概要です。
プロジェクトメイン
- いくつかのObjective-Cクラスは含まれません'.mm' ファイル
- Adapter.h
- libMyCppLib.a 静的ライブラリとして
xCode 4のMain
プロジェクトをコンパイルしているうちに、いくつかのエラーが発生します。
未定義のシンボル:
"new演算子(符号なしlong)"、から参照:
- [アダプタのinit] libMyCppLib.a(Adapter.o)で
私 :: CPP :: 名前空間 :: MyCppClass :: MyCppClass libMyCppLib.aで()(MyCppClass .o)は... いくつかの他の同様のエラー
LD:記号(S)
collect2はARMv6のアーキテクチャが見つかりません:Main
プロジェクトはobjective-を持っていないので、ldは、私はそれがかもしれない把握
1つの終了ステータスを返しましたC++の機能を使用するため、Main
プロジェクトに '.mm'ファイルを追加します。そして今Main
プロジェクトは次のようにする必要があります:
プロジェクトメイン
- いくつかのObjective-Cクラスは含まれません'.mm' ファイル
- Adapter.h
- libMyCppLib DummyObjCpp.h
- -
静的ライブラリとしては.a DummyObjCpp.mm
次に、Main
プロジェクトをコンパイルし、が成功しました!
最後に私の質問は、Main
プロジェクトに '.mm'ファイルを追加せずにobjective-C++機能を設定するにはどうすればいいですか?
またはリンクされたライブラリのリストにのlibstdC++ dylibを追加します。 –
@NSGod貧しい私の英語については申し訳ありません。私はあなたにファイルタイプの変更を提案しましたが、それでも動作しません。しかしあなたの答えにも言及されている@Bavariousの解決策が働く!ありがとうございました – Tony