2009-06-13 13 views
3

iPhoneアプリケーションを開発しています.3.0にアップデートした後、リンク中にCFWriteStreamCreateWithFTPURLにエラーが発生します。これは私がエラーを得るために呼び出すコードです。Objective-cでExtern Cが機能する

streamInfo.writeStream = CFWriteStreamCreateWithFTPURL(NULL, urlRefWrite); 

私はそれをextern「C」を使用して解決することができるが、それをGoogleで検索した後、私は私の問題への解決策を見つけていないという考えを持っています。何か案は?事前

+1

あなたは私たちに、エラーメッセージを与えることができますか? – UncleO

+1

私は現在マシン上に3.0を持っていませんが、私の頭の上からすぐにCoreServicesにリンクしていますか? – zpasternack

+0

私は問題が何であるかを理解しました。新しいプロジェクトを作成し、すべてのクラスをそのプロジェクトにコピーしましたが、使用していたフレームワークを含めるのを忘れました。それで問題を解決したのは、それらを含めていました。それは簡単です。 –

答えて

3

ありがとうございますが、Objective-Cのプロジェクトでextern "C"を使用する必要はありません。これは、Objective-CがCの厳密なスーパーセットであるためです。

7

extern "C"がトリックを行う可能性があります。私は、実装とヘッダファイル宣言の両方でこのようなことをすることによって、C関数をコンパイルしてリンクすることができます。ここでは簡単な例です:

 


#if __cplusplus 
extern "C" { 
#endif 

/// converts a degree value to radians 
double DegreesToRadians(double degrees); 

/// converts radian value to degrees 
double RadiansToDegrees(double radians); 


#if __cplusplus 
} // Extern C 
#endif 

 

実装ファイル:

 

#import "Math.h" 

#if __cplusplus 
extern "C" { 
#endif 


double DegreesToRadians(double degrees) {return degrees * M_PI/180;}; 
double RadiansToDegrees(double radians) {return radians * 180/M_PI;}; 


#if __cplusplus 
} //Extern C 
#endif