G ++包含来自cmd的.rc文件

时间:2019-01-16 19:56:20

标签: c++ windows winapi cmd g++

我已经使用资源(.rc文件)制作了一个简单的WIN32项目。

当我用code :: block编译时,对话框显示, 但是从cmd用g ++编译时却没有。

尝试将.rc作为g ++的参数包括在内,结果如下:
main.rc: file not recognized: File format not recognized collect2.exe: error: ld returned 1 exit status

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

编辑: 我尝试用windres做:
windres main.rc -o res.o
g++ -c win_main.cpp resource.h -o source.o
g++ -o Executable res.o source.o

我遇到相同的错误,但是无法识别main.o,而不是main.rc

2 个答案:

答案 0 :(得分:0)

.rc文件不会送入gcc,它们必须由windres(相当于MS的rc.exe的gcc)进行处理,您可以使用windres从.rc创建.o文件,然后将其送入。 o到gcc(或ld)作为您最终链接阶段的一部分。

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

还有其他潜在的论据,请查看手册页以获取详细信息。

答案 1 :(得分:0)

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

我还要指出的是,您不应该“编译” .h文件。这样做将创建不用于创建可执行文件的预编译头文件,然后导致xxx.o: file not recognized: File format not recognized。由于#include指令,Builder能够自行找到这些头文件。参见类似的问题here