Socket.IO 错误:zlib 没有这样的模块(Swift 3,Xcode 8.3)

Posted

技术标签:

【中文标题】Socket.IO 错误:zlib 没有这样的模块(Swift 3,Xcode 8.3)【英文标题】:Socket.IO error: zlib no such module (Swift 3, Xcode 8.3) 【发布时间】:2017-07-15 18:52:14 【问题描述】:

我按照 Socket.IO 的 README.md 手动实现 Socket.IO 的说明进行操作。我将 Source 文件夹拖到我的项目中,并仔细检查以确保选择了“添加到目标”。当我尝试运行我的项目时,我收到一个错误“没有这样的模块”,因为在 Compression.swift 中找不到 zlib。我应该在我的项目中添加任何其他文件或文件夹吗?我在这里错过了什么?

【问题讨论】:

@JoshuaNozzi 这甚至没有远程回答我的问题。我该怎么办?这个问题与zlibSocket.IO 无关,答案涉及某种我完全不知道的框架或包。完全不同的问题。 Native Swift implementation of DEFLATE (unzip) algorithm的可能重复 @VitaliyGozhenko 你会用你烦人的“可能重复”的cmets来解决它吗?!我已经告诉上面的人这不是重复的。您从字面上发布了与他发布的完全相同的链接。这是一个完全不同的问题! 也检查这个答案about integrating zilb 也检查这个答案about integrating zilb 【参考方案1】:

好的,我设法自己找到了答案,尽管 Socket.IO 的文档对此非常不清楚,也没有提到任何关于 zlib 的内容。要导入 zlib,请转到项目的 Build Settings 并滚动到 Swift Compiler - Search Paths。在那里,您应该通过单击 Release 和 Debug 中的 + 来创建一个新路径。然后,将文件夹路径添加到您下载的 Github 文件中包含的 zlib 文件夹。您可以将文件夹路径指向您下载的 Github 文件夹中的原始位置,也可以将 zlib 文件夹放在项目文件夹中。只要您正确引用它,您将文件夹放在哪里都没有关系。现在,构建并运行,No such module 错误应该会消失。

【讨论】:

我也有同样的问题。我将 zlib 文件夹复制到我的项目文件夹中,但我的问题仍然存在。您是如何正确引用该库的? 另请查看有关集成 zilb ***.com/questions/39648121/…的答案【参考方案2】:

在添加socket.io 后编译项目时,我也遇到了这个错误。我通过将libz.tbd 添加到链接框架和库来修复它(单击目标常规选项卡中的 + 按钮,然后从列表中选择它)。

然而,在这样做之后,我得到了另一个错误:

没有这样的模块'CZLib'

我不确定我添加了哪个版本的socket.io,因为我从我们之前的一个项目中复制了整个文件夹。无论如何,socket 文件夹有一个module.modulemap 文件,它似乎定义了丢失的模块。所以我尝试通过将包含模块映射的socket.io 文件夹添加到目标Import Paths 来修复错误,该目标位于Build Settings 下的Swift Compiler - Search Paths

该项目现在可以无错误地编译。此时我尝试删除链接的libz.tbd,它仍然可以编译。我还没有尝试建立套接字连接,但现在我正在继续前进而不链接libz.tbd

【讨论】:

以上是关于Socket.IO 错误:zlib 没有这样的模块(Swift 3,Xcode 8.3)的主要内容,如果未能解决你的问题,请参考以下文章

节点 js 错误:找不到模块 './lib/socket.io'

Angular 2:错误 TS2307:找不到模块“socket.io-client”

我使用pip的时候“没有名为zlib的模块”错误

错误:找不到模块'socket.io-client / dist / socket.io.min.js'

致命错误:zlib.h:安装 zlib 时没有这样的文件或目录

python2.7没有zlib模块