【问题标题】:Need help applying MinGW patches for std string, getting unexpected ends需要帮助为 std 字符串应用 MinGW 补丁,得到意想不到的结果
【发布时间】:2013-04-06 03:46:27
【问题描述】:

我正在尝试应用这些补丁:

http://tehsausage.com/mingw-to-string

这样我就可以使用无论如何我都应该可以访问的 std 字符串。

我有 MinGW 4.7.2,起初,我尝试复制 zip 文件,但没有成功。

现在我正在尝试手动应用补丁。我将补丁信息复制到一个file.patch中,将它放在与我正在修补的文件相同的文件夹中,然后运行

patch < file.patch

然后我得到:

 patching file stdio.h
 patch unexpectedly ends in middle of line
 Hunk #1 FAILED at 574.
 patch unexpectedly ends in middle of line
 1 out of 1 hunk FAILED -- saving rejects to file stdio.h.rej
 patch unexpectedly ends in middle of line

我确保最后没有多余的空白..

请帮忙!

【问题讨论】:

  • 如果您使用 dos 编辑器创建了补丁文件,它可能缺少尾随行结尾。使用 vim 之类的编辑器来确保文件末尾有行尾。此外,确保文件使用 unix 行尾
  • 您自己尝试了该补丁,它是否有效?如果是这样,你能把补丁文件发给我吗?

标签: c++ mingw std patch


【解决方案1】:

好的,从网站安装最新的mingw,下载patch files并确保它们是干净的。

我分别应用了每一个,它们都可以正常工作。有一条警告说它正在“从文件中删除尾随的 CR”,但它可以正常工作。

每个补丁都应用在适当的目录中;例如stdio.patch 应用于stdio.h,它位于/mingw/include 中,使用:

patch </path/to/stdio.patch

wchar.patch 同上

os_defines.h 文件位于 /mingw/lib/gcc/mingw32/4.7.2/include/c++/mingw32/bits,该补丁也适用于该文件。

我在https://github.com/petesh/mingwpatches.git 创建了一个带有补丁的 github - 您可以克隆存储库,或从那里下载单个文件。它们中的每一个都应该能够正常工作,而无需抱怨尾随的 CR 警告。

【讨论】:

  • 如何下载它们?我只能选择复制其中的内容..
  • 如果你没有 github for windows 或 poshgit,那么你可以点击 zip 的云图标,它会下载 .zip 文件中的文件。 Windows 可以原生打开 zip 文件。
  • 谢谢。文件已成功修补,我将它们替换到正确的文件夹中。我重新启动了我的机器,eclipse 仍然不允许我使用 itoa 或 t_string。有什么想法吗??
  • 确保你设置了编译器标志-std=c++0x,否则代码会一直被注释掉,因此不可用。
  • 我该怎么做?抱歉回复晚了。
【解决方案2】:

查看补丁文件后,您可能需要在patch 命令中使用-c 选项。这告诉 patch 补丁文件来自上下文差异。

例如

$ patch -c < file.patch

【讨论】:

  • 我刚跑了这个,我得到:补丁意外地在中间结束补丁:**** 在补丁输入中只找到垃圾。
  • @MattM 试试-u 选项。
  • 我再次收到与我在原始帖子中相同的错误。两个都试过了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-26
相关资源
最近更新 更多