2011-05-26 17 views
1

私はC関数を呼び出すときに数値を変換して文字列を返すObjective-Cプログラムを作成しています。しかし、コンパイルしようとするとApple Mach-O Linker(ld)エラーが発生しました。Apple Mach-O Linker(ld)Switch文を使用しているときにエラーが発生しましたか?

ここでコードスニペットです:

NSString * convertNum (int theNum) { 
    NSString *numString; 

    switch (theNum) { 
    case 102: 
     numString = @"Oh yea, string 102"; 
     break; 
    case 104: 
     numString = @"Oh great, string 104"; 
     break; 
    /* ... */ 
    default: 
     numString = @"Don't feed me with something I don't know!"; 
     break; 
    } 

    return numString; 
} 

が、私は何も悪いことをしましたか?私はXcode 4を使用しています。ありがとうございました。

+2

エラーは何ですか?また、 'theNum'の型を指定していません。 – yan

+0

これは古典的なぶら下がりポインタの問題ではありませんか? NumStringは関数のスコープ内でのみ有効です。返されたポインタを外部で使うのは不正です。 – talonmies

+0

申し訳ありません私は不注意だった。問題は「Apple Mach-O Linker(ld)Error」です。問題navigator.clangでエラーをダブルクリックしたときにも表示されます。エラー:リンカコマンドが終了コード1で失敗しました(-vを使用して呼び出し) コマンド/開発者/ usr/bin/clangが終了コード1で失敗しました – excalibrate

答えて

5

リンクエラーは、通常、メソッド、関数などの何かがプロトタイプ宣言を持っていることを意味しますが、どこにも実装されていません。また、ライブラリやフレームワークをアプリケーションに含めず、そのライブラリやフレームワークのヘッダーファイルを使用していることを意味する場合もあります。

また、numStringを使用すると、コンパイル時に生成された静的な文字列へのポインタが返されます。

関連する問題