iphone - 使用将网络用于 iphone 应用程序 objective-c 的 c/c++ 库

标签 iphone c++ networking ios objective-c++

我目前正在评估是否可以将 c/c++ 库用于我的特定 iPhone 项目。原始库大量使用特定于 Windows 的代码(例如,它包括 windows.h 和 winsock.h)。我知道我将不得不重写使用 Windows 特定代码的部分,并将 winsocks 替换为例如 bsd 套接字。或者尝试转换为 objective-c++ 并使用 Apple 文档中推荐的 IOS 特定网络 api。

但正如 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 sockets api 或 objective-c++)库是否足够? -> Using C/C++ static libraries from iPhone ObjectiveC Apps

但实际的网络代码仍然是用 c/c++ 编写的,而不是 objective-c。

这有可能奏效吗?我不想做所有调整库的工作,然后发现这种方法不起作用。

有没有人尝试过类似的东西?

最好的问候, 迈克

最佳答案

您应该能够毫无问题地将您的 C++ 库的一部分重写为使用 BSD 套接字而不是 Windows 套接字 API。

Apple 不禁止 C++ 代码访问网络,但是 iOS 提供的唯一网络 API 是 C(BSD 套接字、CoreFundation)或 Objective-C(Foundation...),也许这就是您混淆的根源。您可以在自己的代码或静态链接库中自由混合 C、C++ 和 Objective-C 代码。

关于iphone - 使用将网络用于 iphone 应用程序 objective-c 的 c/c++ 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4247083/

相关文章:

iphone - 将 UIBarButtonItem 添加到 navigationItem.titleView?

iphone - 如何根据TitleView中文本的长度设置UINavigationBar的高度?

iphone - 如何在运行时隐藏Viewcontroller?

iphone - 如何在 UIToolbar 内的 UIBarButtonItem Action 中发送发件人

c++ - 处理命令行参数,允许任何顺序

c++ - 将两个一维直方图合并为一个

c++ - 查找数字的所有因式分解

python - 使用神经网络的传播模型(我是初学者)

c++ - 调用 accept() 导致 WSAEFAULT 10014 Bad address

c++ - boost .asio : multi ports application-layer protocol