我已经使用资源(.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
。
答案 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。