问题描述
提出新问题,因为一些older answer不适用于我的情况。
根据主题,我无法在 Windows 10 中使用 CodeLite 14 和 wxWidgets 3.1.4(使用 MSYS2-mingW64 编译)编译基本的 wxWidgets“Hello,World”程序。
错误信息在行
C:/Users/Federico/codelite/wxHelloWorld/win_resources.rc:1:10: Fatal error: wx/msw/wx.rc: No such file or directory
1 | #include "wx/msw/wx.rc"
| ^~~~~~~~~~~~~~
compilation terminated.
wx-config 运行 wx-config --rcflags
返回的资源文件标志是:
--use-temp-file --define __WxmsW__ --define _UNICODE --include-dir C:/wx/3.1.4-msys/lib/gcc_lib/mswu --include-dir C:/wx/3.1.4-msys/include
所有文件夹/文件都正确就位。通过修补这些标志,我发现如果我删除 --use-temp-file
标志,例如:
--define __WxmsW__ --define _UNICODE --include-dir C:/wx/3.1.4-msys/lib/gcc_lib/mswu --include-dir C:/wx/3.1.4-msys/include
然后一切正常。不幸的是,该标志默认由 wx-config 假定,因此唯一简单的解决方案是停止使用 wx-config
并手动配置所有编译器标志。所以:
- 有什么办法可以避免这种情况吗?
- 那个标志是什么意思?
解决方法
这真的很奇怪,因为 commit 093c3067e8 中的 wx 生成文件中删除了 --use-temp-file
的使用(不要使用 windres --use-temp-file 选项,2020-07-13)是 3.1.4 的一部分,所以您根本不应该看到它。
但是等等,它更奇怪,因为 wx-config 没有您显然使用的 --rcflags
选项。它确实有 --rescomp
选项,但它的输出中根本没有包含 --use-temp-file
,AFAICS,而且绝对没有在 3.1.4 中。
所以看起来您使用的不是官方 3.1.4 版本。您的第一个问题的答案是改用官方来源。