我目前正在评估是否可以将c / c ++库用于我的特定iPhone项目。原始库大量使用特定于Windows的代码(例如,它包括windows.h和winsock.h)。我知道我将不得不重写使用Windows特定代码的部分,并用例如bsd套接字替换winsocks。或者尝试转换为objective-c ++并使用IOS特定的网络apis,因为它在Apple的文档中是推荐的。
但事实证明,在Apple的文档中,在iOS中只允许C和Objective-C代码进行联网。 “iOS支持用C和Objective-C编写的网络代码。” (https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/GS_Networking_iPhone/)
听起来我必须在objective-c中重写整个库以使其在IOS上运行。或者,在objective-c中编写一个包装类并使用原始(适用于bsd套接字api或objective-c ++)库是否足够? - > Using C/C++ static libraries from iPhone ObjectiveC Apps
但实际的网络代码仍然是用c / c ++而不是objective-c。
这有可能有用吗?我不想做所有调整库的工作,然后注意这种方法不起作用。
有没有人尝试过类似的东西?
祝你好运, 麦克
答案 0 :(得分:1)
您应该可以将C ++库的某些部分重写为使用BSD套接字而不是Windows套接字API而没有任何问题。
Apple并不禁止C ++代码访问网络,但iOS提供的唯一网络API是C(BSD套接字,CoreFundation)或Objective-C(Foundation ...),这可能是您混淆的根源。您可以在自己的代码或静态链接库中自由地混合使用C,C ++和Objective-C代码。