2016-03-31 20 views
0

私の問題はかなりシンプルに思えます。私は簡単なGUIを使って簡単なGUIを作成できます。 私の現在の環境はEclipse IDE、msys2、mingw64 toolchainをすべてwindows 10にしています。 ekgでpkg-configを使用して、すべてのライブラリをハードコードしないようにしたいのですが、まずpkg-configプラグインを試しました私は新しいプロジェクト、nullポインタの例外を作成するとクラッシュします。私はGCCへの呼び出しの中にpkg-configコマンドを挿入しようとしました。そのためにはcmdが許可しないのでpowershellを使う必要がありました。 しかし、powershellでも、pkg-configが返す文字列はgccによってコマンドと見なされるため、使用できません。ここで は日食がコンパイルに使用するものである:eclipseを使ってCでWindows上でシンプルなGTK GUIをコーディングする

powershell gcc -O0 -g3 -Wall -c -fmessage-length=0 --std=c99 $(pkg-config-win --cflags --libs gtk+-3.0) -o main.o "..\\main.c" 

そして、ここではそれが私を返すものです:

gcc.exe: error: unrecognized command line option '-mms-bitfields -pthread -mms-bitfields -IC:/msys64/mingw64/include/gtk-3.0 [...]' 

私はその後のpkg-config設定の--cflagsを削除しようとしました: コマンドは、Eclipseで使用されます:

powershell gcc $(pkg-config-win --libs gtk+-3.0) -o Test.exe main.o -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -lwinmm -ldwmapi -lz -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl 

これは結果(同じ行の8倍)です。

gcc.exe: error: .0: No such file or directory 

私は数多くの試みを試みましたが、どれもうまくいきませんでした。

だから、私の主な質問は以下のとおりです。

  1. は、この問題を解決するための簡単な方法はありますか?
  2. 私は正しいことをしていますか(そういうことをすることができるように日食が作られていますか?)
  3. 私は何をすればよいですか? (IDEの変更?GUIライブラリの変更...)

あなたが私を助けることができたら幸いです。私はいくつかの点で不明であったか、十分な情報を与えていない場合、私はあなたの質問にできるだけ早く返信されます私を許しなさい:P

+0

(そうPowerShellで問題を起こさない'-''.'を埋め込まれた引用が自動的に処理される)個々の引数として$cflagsに含まれる各オプションが表示されますpkg-config'の出力をスペースで区切られた複数の引数の代わりに1つの長い引数として扱うようにしました。私はそこにある修正が何か... Eclipseの何かがわからないのですか? – andlabs

+0

それは本当に日食に関連している場合私は知らない。".. \\ main.cの" のgcc -O0 -g3 -Wall -c -fmessage長= 0 --std = C99 $(P の.oそしてここにある:ここで はPowerShellで入力されたコマンドです結果: gcc.exe:エラー:認識できないコマンドラインオプション '-mms-bitfields -pthread [...]' eclipseがコンソールにコマンドを渡してその答えを表示するように見えます。 – DrCampy

+0

そうですそれはPowerShellの問題ですか?PowerShellは '$(...) 'の置換を単一の引数として扱いますか – andlabs

答えて

0
So my main questions are: 
    1.Is there a simple way to solve this problem? 

はい、

を、これは古い質問ですが、それを答えに値するコメントに正しく記載されている問題は、$(pkg-config-win --cflags --libs gtk+-3.0)の出力が1つの長い文字列として返され、gccがそれを認識しないことです。この問題を解決するには、単純にpkg-configの出力を配列として割り当て、gccという配列変数を使用します。

PS> [string[]] $cflags = $(pkg-config-win --cflags --libs gtk+-3.0) 
PS> gcc -O0 -g3 -Wall -c -fmessage-length=0 --std=c99 $cflags -o main.o ..\main.c 

gccその後、何かが `全体を引き起こしているようですね

関連する問題