2011-12-13 2 views
0

MinGW 환경에서 작업하고 있습니다 (2011 년 12 월 12 일에 해당 설치 프로그램과 함께 다운로드 됨). Windres를 사용하여 리소스 (.rc) 파일을 컴파일하려고합니다. "경고 : 무시 null 문자"내가 사용하는 특정 명령은Windres 구문 오류

Windres -O coff About1.rc -o About1.res 

한데로 독서 경고 메시지 적어도 100 선을 생성합니다. 이 다음 Windres 방출 : "Abouty1.rc : 1 : 구문 오류".

사실, About1.rc 파일에는 null 문자가 없습니다. addtition에서 파일의 첫 번째 줄은 include 문입니다. #include "dlgresource.h". 나는이 서술문을 가지고 놀았고이 문장을 삭제했으며, 내가 무엇을 넣었는지 상관 없다는 것을 알게되었다. 나는 똑같은 메세지와 구문 오류 알림을 얻는다.

MSFT의 rc.exe를 사용하면이 .rc 파일을 아무 문제없이 컴파일 할 수 있습니다. 결과 .res 파일은 프로그램 .obj 파일과 원활하게 연결되어 완벽하게 실행됩니다.

나는 무슨 일이 일어나는지 전혀 모른다. 어떤 아이디어?

감사합니다, 마크 Allyn의

답변

3

귀하의 .rc 파일은 아마도 UTF-16로 인코딩됩니다.

국제 문자를 처리하기 위해서는 Microsoft의 [rc.exe]가 일반적으로 필요한 것이지만 GNU [windres.exe]는 ANSI 인코딩 만 처리 할 수 ​​있습니다.

한 가지 해결 방법은 현장 (아마도 예를 들어, 손실 러시아어 또는 그리스어 문자)에서 ANSI로 파일을 변환하는 것입니다 : 당신은 아마 파일을 생성 할 수 VS 또는 유사한 도구를 사용하여

 
> chcp 1252 
Active code page: 1252 

> type my.rc | windres --output-format=COFF -o my.res 

> _ 
1

. 볼 수없는 문자 인코딩의 일부가 null 문자 등이 있습니다.

동일한 내용으로 새 .res 파일을 생성하고 내용을 복사/붙여 넣기하지 말고 직접 입력하십시오.

0

시도 :

windres About1.rc -o About1.o 

다음 그냥 대신 원래 의도 .RES 파일의 .o 인 파일을 결과로 사용합니다.

0

저는 오늘 당신과 같은 문제가있었습니다. 나는 그것이 당신의 질문에서 많은 시간을 보냈다는 것을 알고 있지만, 누군가에게 유용 할 수 있기를 희망하면서 이것을 쓰고 있습니다.

첫째, 나는 Cygwin에서를 사용하여 컴파일 된 오브젝트 파일 .o을 얻은을 writting :

windres -o resource.o resource.rc 

그 일을함으로써, 당신은 .res 파일을 사용할 필요가없는,하지만 .o 하나, 당신은 링크를 다음 수 GNU 리소스를 사용하여 yout 프로그램을 컴파일 할 때 다른 모든 것들과 함께이 객체 :

g++ Header_files CPP_files flags ... -o program.exe recource.o -lm 

예를 들어.