今天编译一个简单的图形程序,编译时报错
gcc test.c
undefined reference to `__imp_Ellipse'
collect2.exe: error: ld returned 1 exit status
在提示下想到需要用到windows自带的gdi32full.dll文件
想着我用的mingw64编出的是64位的程序
于是去 C:\Windows\SysWOW64 目录下找到 gdi32full.dll
gcc test.c C:/Windows/SysWOW64/gdi32full.dll
然后编译报
collect2.exe: error: ld returned 5 exit status
然后在这里卡了很久
各种探索尝试后发现把文件换成 C:\Windows\System32 文件夹里面的 gdi32full.dll
gcc test.c C:/Windows/System32/gdi32full.dll
就能编译成功了,运行也没问题
那么问题来了,为什么明明是64位的程序,却要用到32位所需的dll才能编译成功呢?
搜索之下找到了这篇文章,大概就是讲因为windows历史遗留问题
System32 文件夹下面放的是64位程序的dll,而SysWOW64文件夹下面放的则是32位所需的dll
什么是SysWow64 | Microsoft Docs文章来源:https://www.toymoban.com/news/detail-439369.html
很低级的失误,留个纪念文章来源地址https://www.toymoban.com/news/detail-439369.html
到了这里,关于关于windows下的System32与SysWOW64两个文件夹的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!