3

我开发 iPhone 应用程序,更新到 sdk 3.0 后,链接时出现 CFWriteStreamCreateWithFTPURL 错误。这是我调用以获取错误的代码。

streamInfo.writeStream = CFWriteStreamCreateWithFTPURL(NULL, urlRefWrite);

我有一个想法,它可以使用 extern "C" 来解决,但是在谷歌搜索之后,我还没有找到解决我的问题的方法。有任何想法吗?

提前致谢

4

2 回答 2

9

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

于 2010-02-05T18:46:49.233 回答
3

您永远不必extern "C"在 Objective-C 项目中使用。这是因为 Objective-C 是 C 的严格超集。

于 2009-10-24T03:07:15.467 回答