C++ G++包含cmd中的.rc文件

C++ G++包含cmd中的.rc文件,c++,windows,winapi,cmd,g++,C++,Windows,Winapi,Cmd,G++,我使用resources.rc文件创建了一个简单的WIN32项目 当我使用code::blocks编译时,将显示对话框, 但是当从cmd使用g++编译时,它不会 尝试将.rc作为参数包含到g++中会导致以下结果: main.rc:无法识别文件:无法识别文件格式 collect2.exe:错误:ld返回了1个退出状态 如何将.rc文件包含到cmd中的g++中 编辑: 我试着让windres做: windres main.rc-o res.o g++-c win_main.cpp resource.

我使用resources.rc文件创建了一个简单的WIN32项目

当我使用code::blocks编译时,将显示对话框, 但是当从cmd使用g++编译时,它不会

尝试将.rc作为参数包含到g++中会导致以下结果: main.rc:无法识别文件:无法识别文件格式 collect2.exe:错误:ld返回了1个退出状态

如何将.rc文件包含到cmd中的g++中

编辑: 我试着让windres做: windres main.rc-o res.o g++-c win_main.cpp resource.h-o source.o g++-o可执行文件res.o source.o


我得到了相同的错误,但是使用main.o而不是main.rc无法识别。

.rc文件没有提供给gcc,它们必须由windres处理。gcc等效于MS'rc.exe,您可以使用windres从.rc创建一个.o文件,然后将该.o提供给gcc或ld,作为最终链接阶段的一部分

windres my_file.rc my_file.o
gcc -o my_final <other parameters> my_file.o

windres还有其他可能的参数,请查看手册页了解详细信息。

MS resource tools和GNU tools之间的主要区别在于,MS RC以特殊的二进制资源格式生成“.res”文件,这些文件可以直接传递给MS links,而GNU linker LD只支持“.o”与“.obj”格式相同。因此,作为@SoronelHaetir的答案,您需要使用windres: windres main.rc-o res.o


我还想指出的是,您不应该编译.h文件。这样做将创建不用于创建可执行文件的预编译头文件,然后导致xxx.o:文件无法识别:文件格式无法识别。由于包含指令,生成器能够自行查找这些头文件。请参阅类似的问题。

将头文件作为g++的参数删除就成功了。非常感谢。