我用C语言编写了一个简单的应用程序(用于测试)-Windows 10上的CYGWIN(x86_64-pc-cygwin)上的GCC 9.3.0,并且运行良好。但是在1-2天前,Windows 10已更新(功能更新1909(2))。我不知道更新是下一个错误的原因,但是现在应用程序有时可以工作,但更多情况下它会失败并显示错误:
$ ./xxx.exe
0 [main] xxx (7152) D:\prj\xxx\xxx.exe: *** fatal error - cygheap base mismatch detected - 0x180343408/0x1093408.
This problem is probably due to using incompatible versions of the cygwin DLL.
Search for cygwin1.dll using the Windows Start->Find/Search facility
and delete all but the most recent version. The most recent version *should*
reside in x:\cygwin\bin, where 'x' is the drive on which you have
installed the cygwin distribution. Rebooting is also suggested if you
are unable to find another cygwin DLL.
[在Cygwin控制台(bash)-Cygwin.bat中运行时会发生。我在bash环境中看不到奇怪的事情。 但是在PowerShell中运行总是正常(cygwin1.dll与应用程序位于同一文件夹中。)> Cygwin的bash中的ldd xxx.exe
显示:
$ ldd xxx.exe ntdll.dll => /cygdrive/c/WINDOWS/SYSTEM32/ntdll.dll (0x7fff5e440000) KERNEL32.DLL => /cygdrive/c/WINDOWS/System32/KERNEL32.DLL (0x7fff5da50000) KERNELBASE.dll => /cygdrive/c/WINDOWS/System32/KERNELBASE.dll (0x7fff5b860000) cygwin1.dll => /cygdrive/d/prj/xxx/cygwin1.dll (0xcc0000) FreeImage.dll => /cygdrive/d/prj/xxx/FreeImage.dll (0x180000000) WS2_32.dll => /cygdrive/c/WINDOWS/System32/WS2_32.dll (0x7fff5d870000) VCOMP140.DLL => /cygdrive/c/WINDOWS/SYSTEM32/VCOMP140.DLL (0x7fff55550000) RPCRT4.dll => /cygdrive/c/WINDOWS/System32/RPCRT4.dll (0x7fff5d750000) USER32.dll => /cygdrive/c/WINDOWS/System32/USER32.dll (0x7fff5e0b0000) win32u.dll => /cygdrive/c/WINDOWS/System32/win32u.dll (0x7fff5bd40000) GDI32.dll => /cygdrive/c/WINDOWS/System32/GDI32.dll (0x7fff5cac0000) gdi32full.dll => /cygdrive/c/WINDOWS/System32/gdi32full.dll (0x7fff5b570000) msvcp_win.dll => /cygdrive/c/WINDOWS/System32/msvcp_win.dll (0x7fff5b3d0000) ucrtbase.dll => /cygdrive/c/WINDOWS/System32/ucrtbase.dll (0x7fff5b470000) cygwin1.dll => /cygdrive/d/prj/xxx/cygwin1.dll (0xec0000)
我使用以下方式构建应用程序:
... CC = d:/apps/cygwin/gcc LIBS := libFreeImage.a ... $(EXE): $(OBJECTS) $(HEADERS) $(CC) $(CFLAGS) $(OBJECTS) -o $(EXE) $(LIBS)
这里怎么了?哪里有错误?
我用C语言编写了一个简单的应用程序(用于测试)-Windows 10上的CYGWIN(x86_64-pc-cygwin)上的GCC 9.3.0,并且运行良好。但是在1-2天前,Windows 10已更新(功能更新1909(2))。我不...
rm /cygdrive/d/prj/xxx/cyg*.dll
,问题可能会消失。