2016-03-31 19 views
0

ile C içinde pencerelerde basit bir GTK GUI kodlama Benim sorun oldukça basit görünüyor: C (ve eğer mümkünse pencereler) için pencereler için basit bir GUI ile basit bir program oluşturabilmek istiyorum. Geçerli ortamım eclipse IDE, mingw64 toolchain ile msys2 tüm pencereler üzerinde 10. Tüm kütüphanelerimi "hard-coding" önlemek için eclipse ile pkg-config kullanmak istiyorum ve bunun için ilk önce pkg-config eklentisini denedim tutulması için (yeni bir proje oluşturduğumda çöküyor, boş gösterici istisnası). Sonra gkg-config komutunu GCC'ye çağırmayı denedim. Bunun için powershell kullanmam gerekti çünkü cmd buna izin vermiyor. Ancak, powershell'de bile kullanamıyorum çünkü pkg-config'un bana verdiği komut, gcc tarafından bir komut olarak kabul edilir.eclipse

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

Ve işte beni döndüren nedir: Tutulma tarafından kullanılan Command:

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

Sonra pkg-config ait --cflags kaldırmak için çalıştı İşte Tutulma derlemek için kullandığı :

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 

Ve işte sonuç (aynı satırın 8 katı).

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

Düzinelerce farklı şey denedim ancak bunların hiçbiri çalışmıyor.

Yani benim ana sorular şunlardır: Bu sorunu çözmek için basit bir yol

  1. var mı?
  2. Doğru şeyleri yapıyorum (böyle şeyler yapabilmeniz için tutulur mu?)
  3. Değilse, ne yapmalıyım? (IDE değiştirilsin mi? GUI kütüphanesini değiştir ...)

Umarım bana yardım edebileceksiniz, verebileceğin olanaklar hakkında çok açıkım. Sorularınızın kısa sürede ben cevap verecektir, bazı noktalarda belli değildi kusuruma bakmayın ya da yeterince bilgi vermeyin lütfen: p

+0

(otomatik böylece ele '-' ve '.' gömülü olduğu alıntı powershell sorunlara neden olmazlar) bireysel bir argüman olarak $cflags bulunan her seçenek göreceksiniz pkg-config 'çıktısı, çoklu alan ayrımlı bağımsız değişkenler yerine uzun bir argüman olarak ele alınacaktır. Eclipse'deki bir şeyin ne olduğundan emin değilim. – andlabs

+0

Gerçekten tutulma ile ilgili olup olmadığını bilmiyorum.".. \\ main.c" gcc O0 -g3 -Wall -c -fmessage uzunlukta = 0 --std = c99 $ (p .o Ve burada: Burada powershell girilen komut Sonuç: gcc.exe: hata: tanınmayan komut satırı seçeneği '-mms-bitfields -preadread [...]' Bu nedenle, eclipse komutları konsola iletir ve göstergeyi görüntülemek için geri alır. – DrCampy

+0

PowerShell sorunu daha sonra tek bir argüman olarak '$ (...)' değiştirir mi? – andlabs

cevap

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

Evet,

bu eski bir soru olsa da, bunu bir cevabı hak ediyor. Yorumlarda doğru olarak belirtilen sorun, $(pkg-config-win --cflags --libs gtk+-3.0) çıktısının bir uzun dize olarak döndürülmesidir ve gcc bunu tanımıyor. Sorunu çözmek için pkg-config çıktısını bir dizi olarak atayabilir ve dizi değişkenini gcc, ör.

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 sonra `tamamını neden olan şey gibi geliyor