Visual studio 2010 Visual C+出现问题+;2010(Express)外部工具命令

Visual studio 2010 Visual C+出现问题+;2010(Express)外部工具命令,visual-studio-2010,makefile,Visual Studio 2010,Makefile,我在SuperUser上发布了这个…但我希望SO的专业人士也能对如何解决这个问题有个好主意 通常我们在VS 2005 Pro中开发,但我想给VS 2010一个旋转。我们有基于GNU make工具的定制构建工具,这些工具在创建可执行文件时被调用 这是我调用外部工具时看到的错误: …\gnu\make.exe):***无法提交cygwin堆的内存,Win32错误487 需要注意的是,它在VS2005中仍然可以很好地工作,并且可以直接从命令行调用。此外,我的外部工具的设置与VS2005中的完全相同 是

我在SuperUser上发布了这个…但我希望SO的专业人士也能对如何解决这个问题有个好主意

通常我们在VS 2005 Pro中开发,但我想给VS 2010一个旋转。我们有基于GNU make工具的定制构建工具,这些工具在创建可执行文件时被调用

这是我调用外部工具时看到的错误:

…\gnu\make.exe):***无法提交cygwin堆的内存,Win32错误487

需要注意的是,它在VS2005中仍然可以很好地工作,并且可以直接从命令行调用。此外,我的外部工具的设置与VS2005中的完全相同

是否有某些设置可能导致抛出此错误?

从cygwin来看,其他人似乎也遇到过类似的情况,即使没有通过Visual Studio运行,他们发现解决方案通常是使用cygwin的最大内存设置:

(注意:从上面可以看出,有些价值观是可行的,有些价值观是无效的)

其他人也报告了反病毒软件的问题(建议出于某种原因从内存中卸载),可能还有兼容性设置(尝试将其设置为XP),在某些情况下可能会影响cygwin。见:

至于VisualStudio:您是否在64位机器上,如果是,您是否通常在64位环境中运行该工具

我发现,由于VisualStudio2010以32位运行,因此从中启动的工具将作为32位进程启动(为了更好地说明这一点,请添加“cmd”作为工具)。我不知道为什么这在2005年不会受到影响(除非2005年允许系统启动进程(64位),2010年自己处理(32位))。

来自:

每个Cygwin应用程序都有一个特殊的堆 用于保存继承的内容的区域 到子进程。所有文件 描述符结构存储在 那个堆区域(称为“小天鹅”)。 这个小家伙至少有4000个房间 文件描述符结构。但是- 这就是线索——它的大小是固定的。这个 cygheap不能生长。它的尺寸是 在应用程序启动时保留 而且它的街区都是承诺的 要求

由于某种原因,您的服务器 应用程序需要所有的cygheap 在所述条件下运行时的空间 条件

可能的解决方案可以在以下方面找到:

Cygwin的堆是可扩展的。然而, 它确实是从一个固定的大小和 扩展它的尝试可能会遇到问题 以前被使用过的内存 由Windows分配。在某些情况下, 这个问题可以通过添加 在 HKEY_本地_机器(更改 限制所有用户)或 HKEY_当前_用户(仅适用于 注册表的“当前用户”部分

将DWORD值heap\u chunk\u添加到\u mb中 并将其设置为所需的内存限制 以十进制MB为单位。我更喜欢这样做 这是在Cygwin中使用regtool实现的 包括在Cygwin中的程序 包裹(有关 regtool或其他Cygwin实用程序, 请参阅“Cygwin”一节 或使用的--help选项 每个人都应该是 使用regtool时要小心,因为 损坏系统注册表可能会 导致系统无法使用。这 示例将内存限制设置为1024 MB:

regtool -i set /HKLM/Software/Cygwin/heap_chunk_in_mb 1024
regtool -v list /HKLM/Software/Cygwin
退出所有正在运行的Cygwin进程并 重新启动它们。可以分配内存 达到系统交换的大小 空间减去任意大小的任意 运行进程。系统交换 应至少与 物理安装的RAM,可以 在的系统类别下修改 控制面板

确保windows交换文件的最大大小足够大不会有什么坏处


总结:环境没有为cygwin可执行文件分配足够的堆空间。由于某些原因,VS2010 Express的问题更为严重。您需要修复环境,或者使用cygwin以外的另一个Linux端口,或者使用Microsoft实用程序。

(一周后,即使有赏金,也不会偷看一眼。是否VS 2010只是一个柠檬?)您尝试过更简单的方法吗,就像在没有自定义工具的情况下构建HelloWorld一样?这是一个32位的环境…我将查看那些线程,虽然刚刚编辑过,但发现了以下链接,其中有人遇到由防病毒软件或可能的兼容性设置引起的类似问题: