2011-07-30 7 views
10

4私はビル静的C++ libには

  • に例や記事を見つけたため、静的なObjective Cのlibに作成C++アプリケーション
  • で使用するための静的C++のlibを作成します。 Objective Cアプリケーションで使用します。私はちょうどたい

私は見つけることができなかったし、今日間で周り苦しめてきた何、XCodeの4の下でのObjective-Cのアプリで

を使用するために、静的なC++のlibを作成するための正しい方法です。 「静的」とに「シンボルは、デフォルトでは非表示」していると私はのARMv7/ARMv6のターゲットでこれをコンパイルし、GCC 4.2コンパイラ、リンク「C++標準ライブラリの種類」

#include <iostream> 
#include "myCppLib.h" 

using namespace std; 

extern "C" void show_the_world() { 
    cout << "Hello, world!\n"; 
} 

:テスト目的のために、この非常に単純なコードを使用しますYES、静的C++ライブラリのXcodeヘルプで説明しています。

含まれていないか、正しく参照されていないようだSTD ++ libに、およそ「show_the_world」関数のエラーを呼び出す私のObjective-Cのアプリ:

Undefined symbols for architecture armv6: 
"std::ios_base::Init::~Init()", referenced from: 
    ___tcf_0 in libmyCppLib_dev.a(myCppLib.o) 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     _show_the_world in libmyCppLib_dev.a(myCppLib.o) 
    "std::ios_base::Init::Init()", referenced from: 
    __static_initialization_and_destruction_0(int, int)in libmyCppLib_dev.a(myCppLib.o) 
    "std::cout", referenced from: 
    _show_the_world in libmyCppLib_dev.a(myCppLib.o) 
ld: symbol(s) not found for architecture armv6 
collect2: ld returned 1 exit status 

は私がのためのライブラリをコンパイルすることを確信しています正しいアーキテクチャーなので、別の設定やコードで間違っている必要があります。

何か助けてください!

敬具、 ジミー

+0

このスレッドは役に立ちます - http://stackoverflow.com/questions/376966/using-c-c-static-libraries-from-iphone-objectivec-apps – Perception

+5

私はすでにこの記事を新しくしましたが、私の 'あまり良くない'英語のために、私はこの記事の答えを見つけませんでした。あなたが私にリダイレクトした後、もう少し時間を取った - そして今はうまくいきます:) 結果として得られたobjective-cプロジェクトのコンパイルにstd ++ libを含めることがポイントでした。だから、ありがとう! –

+0

おめでとうございます! – Perception

答えて

2

;)

結果として得られたobjective-cプロジェクトのコンパイルにもstd ++ libを含めることがポイントでした。

10

正しい答えはコメントでジミーKoertingによって提供されました:。アプリは標準ライブラリのシンボルを解決するためのlibstdC++に対してdylibリンクする必要があります。 ジミーKoertingのおかげで、私はここに追加するもう一つのことはあり、あなたがiOSの6.1とXcodeの最新バージョンを使用している場合は、こののlibstdC++を追加してください、私自身のコメントに回答6.dylib

+0

はい、私のXcode 5.0.2では、libstdC++。6.dylibを使用してリンカエラーを解決しなければなりませんでした。 libstdC++。dylibまたはlibC++。dylibを使用しても助けになりませんでした。 –

関連する問題