我开发 iPhone 应用程序,更新到 sdk 3.0 后,链接时出现 CFWriteStreamCreateWithFTPURL 错误。这是我调用以获取错误的代码。
streamInfo.writeStream = CFWriteStreamCreateWithFTPURL(NULL, urlRefWrite);
我有一个想法,它可以使用 extern "C" 来解决,但是在谷歌搜索之后,我还没有找到解决我的问题的方法。有任何想法吗?
提前致谢
我开发 iPhone 应用程序,更新到 sdk 3.0 后,链接时出现 CFWriteStreamCreateWithFTPURL 错误。这是我调用以获取错误的代码。
streamInfo.writeStream = CFWriteStreamCreateWithFTPURL(NULL, urlRefWrite);
我有一个想法,它可以使用 extern "C" 来解决,但是在谷歌搜索之后,我还没有找到解决我的问题的方法。有任何想法吗?
提前致谢
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
您永远不必extern "C"
在 Objective-C 项目中使用。这是因为 Objective-C 是 C 的严格超集。