使用Eclipse编译Windows API C程序后,如何消除程序兼容性助手弹窗?
解决Eclipse+MinGW编译Windows API程序后弹出兼容性助手弹窗的问题
以下是几个可行的解决办法:
- 添加程序版本信息资源
Windows兼容性助手常因程序缺少版本元数据,误判为未正确安装的旧程序。给程序加上版本信息即可解决:- 创建名为
version.rc的资源文件,内容如下:
- 创建名为
#include <windows.h> VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,0 PRODUCTVERSION 1,0,0,0 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x40004L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "CompanyName", "自定义名称\0" VALUE "FileDescription", "你的应用程序\0" VALUE "FileVersion", "1.0.0.0\0" VALUE "InternalName", "your_app.exe\0" VALUE "LegalCopyright", "版权声明\0" VALUE "OriginalFilename", "your_app.exe\0" VALUE "ProductName", "产品名称\0" VALUE "ProductVersion", "1.0.0.0\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END
- 在Eclipse中右键项目→Properties→C/C++ Build→Settings→MinGW C Linker→Input,将
version.rc添加到“Other objects”中;或者先执行命令windres version.rc -o version.o把rc文件编译成目标文件,再将version.o加入链接对象。
检查可执行文件命名
确保Eclipse生成的程序是标准.exe后缀,名称不含特殊字符:
右键项目→Properties→C/C++ Build→Settings→MinGW C Linker→Output,确认输出文件名为${ProjName}.exe这类规范命名。手动禁用兼容性提示(临时方案)
如果上述方法无效,可直接修改程序兼容性设置:
找到生成的.exe文件,右键→属性→兼容性,取消勾选“兼容模式运行这个程序”,可勾选“以管理员身份运行此程序”(或点击“更改所有用户的设置”做全局修改),应用后再运行程序就不会弹出提示。确认链接必要的Windows库
检查Eclipse是否正确链接Windows API所需库,避免因缺失库导致的异常被误判:
右键项目→Properties→C/C++ Build→Settings→MinGW C Linker→Libraries,添加user32、kernel32这类需要的库(无需加.lib后缀,MinGW会自动处理)。
内容的提问来源于stack exchange,提问作者Hantalyte
相关产品推荐
相关产品推荐

