Gtk programlama resimler yüklenmiyor!!

Gtk programlama resimler yüklenmiyor!!

Mesajgönderen 1DOST » 25 Ağu 2008, 23:44

Herkese selamlar..
Gtk ve C programlama ile adam-asmaca oyunu yapıyorum. Oyunda klasörlerden resimler yüklenerek ekrana çıkartılıyor. Kullandığım derleme kodu şu==>

gcc -Wall -g main.c -o adam-asmaca `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`

program bu kod ile sorunsuz derleniyor. Ve konsoldan adam-asmaca çalıştırılabilir dosyanın olduğu klasöre girip ./adam-asmaca diye girdiğimde program sorunsuz çalışıyor. Resimler ekrana geliyor. Fakat konqueror gibi bi dosya yöneticisi ile klasöre gelip adam-asmaca'ya tıklayıp çalıştırdığımda program çalışıyor fakat resimler yüklenmiyor Üzgün Bunun nedeni ne olabilir. Ben program yazım esnasında resimlerin yüklenmesi için şuna benzer kodlar vermiş idim==>
game_logo = gtk_image_new_from_file ("./picture/logo.png");

Aynı kodu windowsta derleyince resimlerin yüklenmeme sorunu olmuyor.
IDE olarak Codeblock üzerinde çalışıyorum.
Kullanıcı avatarı
1DOST
Deneyimli Üye
Deneyimli Üye
 
Mesajlar: 323
Kayıt: 02 Kas 2006, 01:00

Mesajgönderen elektronist » 26 Ağu 2008, 09:45

1DOST,

Windows .exe dosyaları ile Linux programlarının çalışmaları sırasında kullandıkları çevre değişkenleri farklı olarak değerlendirilmekte.

Kod: Tümünü seç
game_logo = gtk_image_new_from_file ("./picture/logo.png");


Burada kullandığınız dosya yolu ve ismi Linux'ta grafik birim ile başlattığınızda varsaylan dizin yani "./" programın çalıştırıldığı ve sizin olmasını beklediğiniz kullanacağınız dosyaların bulunduğu dizin değil çalıştırdığınız kullanıcının ~/ - yani $HOME dizini olmakta. Bu durumda da dosyalara erişilememekte. Bu nedenle ya programınız içinde dosyaların bulunduğu dizini tespit eden bir bölüm ile path'ın eksik bölümünü tamamlayacaksınız ya da bir kurulum - setup programı kullanacaksınız. Bundan başka farklı çözümler de bulunuyor. Eğer programda kullandığınız dosyalar hiç değişmiyorsa bunları birer resource olarak tanımlayıp program dosyasına ekleyebilirsiniz. Bir başka çözüm olarak da program için bir .conf dosyası oluşturup bu dosyada gerekli dizinleri ayarlayabilirsiniz. Yapacaklarınız sizin yaratıcılığınıza bağlı. ;)

Tam olarak karşılığı olmasa da eniXma Ağustos sayısında SweetHome3D için basit bir setup.sh uygulaması bulabilirsiniz.

Kolay gelsin.
Kullanıcı avatarı
elektronist
Moderatör
Moderatör
 
Mesajlar: 1662
Kayıt: 14 Nis 2002, 00:00
Konum: Izmir

Mesajgönderen 1DOST » 26 Ağu 2008, 17:42

Teşekkür ettim cevap için sorunu hallettim. :) Adresi tam yazdığımda sorun ortadan kalkıyor ==>

/home/aykut/Development/Codeblocks/adam-asmaca/bin/Debug/picture/logo.png

:) Tabi bunu dediğiniz gibi otomatiğe bağlamak gerek.
Kullanıcı avatarı
1DOST
Deneyimli Üye
Deneyimli Üye
 
Mesajlar: 323
Kayıt: 02 Kas 2006, 01:00

Mesajgönderen Racih » 26 Ağu 2008, 18:10

/home/$USER/ bunu bir değişkene atarsan sorun ortadan kalkar :)
Kullanıcı avatarı
Racih
Forum Gurusu
Forum Gurusu
 
Mesajlar: 846
Kayıt: 06 Kas 2005, 01:00

Mesajgönderen RcPaYaN » 26 Ağu 2008, 18:26

Kod: Tümünü seç
  gchar *resim;
  resim = getenv("HOME");
  strcat(resim,"/picture/logo.png");
  game_logo = gtk_image_new_from_file (resim);


şeklinde kullanabilirsiniz sanırım.

kolay gelsin...
Mandriva2008
Kullanıcı avatarı
RcPaYaN
Forum Gurusu
Forum Gurusu
 
Mesajlar: 914
Kayıt: 03 Şub 2005, 01:00
Konum: İstanbul

Mesajgönderen 1DOST » 27 Ağu 2008, 13:39

getenv ("PWD") komutu ile işimi hallettim. Bu PWD ile o an bulunulan klasörün yolunu veriyor. Bunu resmin bulunduğu yol ile birleştirince sorun ortadan kalktı:)
Kullanıcı avatarı
1DOST
Deneyimli Üye
Deneyimli Üye
 
Mesajlar: 323
Kayıt: 02 Kas 2006, 01:00

Mesajgönderen 1DOST » 27 Ağu 2008, 14:49

1DOST yazdı:getenv ("PWD") komutu ile işimi hallettim. Bu PWD ile o an bulunulan klasörün yolunu veriyor. Bunu resmin bulunduğu yol ile birleştirince sorun ortadan kalktı:)


evet sorun ortada kalktı sanmıştım ama devam ettiğini gördüm. Konquerordan doğru oyunu bulup çalıştırdığımda sorun aynen devam ediyor.
getenv("PWD") ile klasör yolunu bulup üzerine resmin bulunduğu klasörü ekleyip yol olarak göstermiştim genede işe yaramadı. Fakat aynı yolu elle yazıp compile edince işe yarıyor. Nedir bu iş anlamadım :(
Kullanıcı avatarı
1DOST
Deneyimli Üye
Deneyimli Üye
 
Mesajlar: 323
Kayıt: 02 Kas 2006, 01:00

Mesajgönderen RcPaYaN » 27 Ağu 2008, 15:52

merhabalar.

bildiğim kadarıyla programlar çalıştırıldıklarında, çalıştırıldıkları dizin olarak kullanıcı dizinini baz alıyorlar. sorun sanırım bu yüzden kaynaklanıyor. oyun için yapman gereken yüklenirken /usr/local/games yada bunun gibi bir dizine resimleri kopyalaman ve resimler için bu dizinleri kullanman. aklıma ilk gelen çözüm yöntemi bu oldu eminim daha farklı yöntemler de vardır çözmek için.

kolay gelsin...
Mandriva2008
Kullanıcı avatarı
RcPaYaN
Forum Gurusu
Forum Gurusu
 
Mesajlar: 914
Kayıt: 03 Şub 2005, 01:00
Konum: İstanbul


Dön Glade / Anjuta, GTK

Kimler çevrimiçi

Bu forumu gezen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 1 misafir

cron