2011-12-13 28 views
0

私はMinGW環境で作業しています(2011年12月12日にインストーラと共にダウンロード)。私は、リソース(.rc)ファイルをWindresを使用してコンパイルしようとしています。 「警告:ヌル文字は無視され、」私が使用する特定のコマンドは、読んで警告メッセージの少なくとも100行を生成Windresの構文エラー

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

windresはあります。この後、Windresは "Abouty1.rc:1:syntax error"を発行します。

実際、About1.rcファイルにヌル文字はありません。追加では、ファイルの最初の行はインクルードステートメントです:#include "dlgresource.h"。私は周りに遊んで、この声明を削除し、それは私がそこに置いて問題ではないことが判明、私はメッセージと構文エラーの通知と同じ風潮を取得します。

MSFTのrc.exeを使用すると、この同じ.rcファイルが問題なくコンパイルされます。生成される.resファイルは、プログラム.objファイルとスムーズにリンクし、完全に実行されます。

私は何が起こっているのか分かりません。何か案は?

おかげで、 マーク・アリン

答えて

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

。表示されない文字エンコーディングの一部がヌル文字などになります。

同じ内容の新しい.resファイルを生成します。コンテンツをコピー/ペーストしないで自分で入力してください。

0

試してみてください。

windres About1.rc -o About1.o 

してからちょうど結果の.oファイルの代わりに、本来.RESファイルを使用します。

0

私は今日あなたと同じ問題を抱えています。私はそれがあなたの質問から多くの時間を過ごしたことを知っていますが、私はそれが誰かにとって役に立つことができることを希望してこれを書いています。あなたが.resファイルを使用する必要がいけない、しかし.o 1、そしてあなたは、リンク、その後することができることを行うことで

windres -o resource.o resource.rc 

まず、私はCygwinの、足すを使用してコンパイルされたオブジェクトファイル.oを得ましたGNUリソースを使用してyoutプログラムをコンパイルすると、このオブジェクトは他のすべてと一緒になります。

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

たとえば、