Thread overview
January 21, 2010

Dlinks'te 2.009 için bu işi yapmış olan bir araç var:
http://www.steinmole.de/d/

Ben bunla biraz uğraştım ve programın içindeki mysql_test derlenirken hata vermiyor. Ama çalıştırırken "Parçalama Arızası" diyor. Acaba biz bunu 2.039 için yapabilir miyiz ?

Bu arada uğraşırken yaptıklarım: inout olan şeyleri ref'e çevirdim. Belki bir iki şey daha yapmışımdır. Ama "__gshared" koymadım.
Derlerken şu komutu kullandım: 'dmd mysql_test.d mysql.d -L/usr/lib/libmysqlclient.so'
Bu komutu verince derleniyor ama örneği çalıştırırken "Parçalama arızası" diyor.
Ayrıca 'dmd mysql_test.d mysql.d' deyince de şöyle hatalar çıkıyor :


mysql_test.o: In function `_Dmain':
mysql.d:(.text._Dmain+0x15): undefined reference to `mysql_init'
mysql.d:(.text._Dmain+0x3f): undefined reference to `mysql_real_connect'
mysql.d:(.text._Dmain+0x73): undefined reference to `mysql_query'
mysql.d:(.text._Dmain+0x7b): undefined reference to `mysql_store_result'
mysql.d:(.text._Dmain+0x84): undefined reference to `mysql_num_rows'
mysql.d:(.text._Dmain+0x9c): undefined reference to `mysql_fetch_row'
mysql.d:(.text._Dmain+0x13f): undefined reference to `mysql_query'
mysql.d:(.text._Dmain+0x14d): undefined reference to `mysql_query'
mysql.d:(.text._Dmain+0x155): undefined reference to `mysql_affected_rows'
mysql.d:(.text._Dmain+0x16a): undefined reference to `mysql_get_server_info'
mysql.d:(.text._Dmain+0x181): undefined reference to `mysql_close'
mysql_test.o: In function `db_fetch_array':
mysql.d:(.text.db_fetch_array+0xd): undefined reference to `mysql_fetch_row'
mysql.d:(.text.db_fetch_array+0x35): undefined reference to `mysql_fetch_lengths'
mysql.d:(.text.db_fetch_array+0x44): undefined reference to `mysql_num_fields'
mysql_test.o: In function `db_fetch_assoc':
mysql.d:(.text.db_fetch_assoc+0xd): undefined reference to `mysql_fetch_row'
mysql.d:(.text.db_fetch_assoc+0x31): undefined reference to `mysql_fetch_lengths'
mysql.d:(.text.db_fetch_assoc+0x3e): undefined reference to `mysql_field_seek'
mysql.d:(.text.db_fetch_assoc+0x49): undefined reference to `mysql_fetch_field'
collect2: ld returned 1 exit status
--- errorlevel 1


--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

Alıntı:

>

"undefined reference", bağlayıcının verdiği bir hatadır. Programda kullanılan bir ismin bulanamadığını söyler. libmysqlclient.so'yu kullanman gerekli...

Bir önceki mesajımda da belirttiğim gibi onu kullanarak da yapıyorum(dmd mysql_test.d mysql.d -L/usr/lib/libmysqlclient.so ).
Ve hatasız derleniyor. Ama çalıştırdığım zaman parçalama arızası veriyor.(Daha parçalama arızası ne olduğunu ve neden böyle bir hata verir hiç bir şey bilmiyorum :-D )

Ama bu kodları yazanlar sanırım C'den çevirmişler. (?) Bizde çeviremez miyiz ?
http://www.digitalmars.com/d/2.0/htod.html

Burada yazanları uygulasak olmaz mı ?(Sizin ncurses maceranızda vardı. Bunun hakkında bir şeyler biliyorsunuzdur.)

Bunları da merak etmiyor değilim .

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

Tamam. Bu arada ben bir kaç dakikalık windows'u açtım ve htod uygulamasını denedim.

Uygulama şu idi:


/* benimki.h */
int topla(int x,int y){
   return (x+y);
}

float ort(int x,int y){
  return (x+y)/2.0;
}


Bunu çevirmesini istedim ve çevirdi. Bir D dosyası yazıp bunu import ettim hata verdi. Bende __gshared sözcüğünü ekledim. Bu sefer derlendi ama nedense çalıştırırken windows hata verdi.

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

Alıntı:

>

Ne hatası verdi? :)
geçerli win32 uygulaması değildir dedi diye hatırlıyorum.

Şuan windows'u açmadığım için tam olarak bilemiyorum ama önemli değil. Nasıl olsa bir şeyi çevirmeyeceğiz, çevirmelerini bekleyeceğiz.
(Ama bana projelerin çoğu d2 için uyacaklarına inanamıyorum. Çünkü bazı projeler 5 yıllık. 5 yıl ben bir projeyi bırakacağım ve onu 5 yıl sonra mı hatırlayacağım ? Hiç sanmıyorum. Ama şöyle bir şey bekliyorum. Başkaları o projeyi devralacak ya da ona benzer bir proje yapacak. Bu olasılık olursa hiç şaşırmam.)

Bu arada h dosyasını aldığım site: http://www.kadirga.k12.tr/egitim/c_programlama/ders.php-id=4.htm

Ortada bir yanlış varsa benden kaynaklanmıyor. Çünkü ben C'yi hata yapacak kadar bilmiyorum :-)

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

"undefined reference", bağlayıcının verdiği bir hatadır. Programda kullanılan bir ismin bulanamadığını söyler. libmysqlclient.so'yu kullanman gerekli...

2.009'dan bu yana çok şey değişti. Örneğin sabit uzunluklu dizilerin artık "değer türü" olmaları yeni sorunlar getirebilir.

Ama hiç bilemiyorum... :/

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

Alıntı (canalpay):

>

parçalama arızası ne olduğunu ve neden böyle bir hata verir hiç bir şey bilmiyorum :-D )

Bellek erişim hatası.

Alıntı:

>

?(Sizin ncurses maceranızda vardı. Bunun hakkında bir şeyler biliyorsunuzdur.)

htod yalnızca Windows'da çalışıyormuş. ncurses'i de yalnızca bir kaç işlevi için ve elle yapmıştım.

dmd'nin son haliyle çalışmayan çok kütüphane var. Ben onlara bu aşamada bakmayı verimli bulmuyorum. Kusura bakmazsan, tembellik ederek o kütüphanelerin D2'ye uymalarını zamana bırakacağım. ;)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

Alıntı (canalpay):

>

Tamam. Bu arada ben bir kaç dakikalık windows'u açtım ve htod uygulamasını denedim.

Uygulama şu idi:


> /* benimki.h */
> int topla(int x,int y){
>     return (x+y);
> }
>
> float ort(int x,int y){
>    return (x+y)/2.0;
> }
>
>

htod, başlık dosyalarını çevirmek için. Başlık dosyalarında işlev tanımları değil, işlev bildirimleri olur:

/* benimki.h */
int topla(int x,int y);
float ort(int x,int y);

Onların tanımları da bir .c dosyasında bulunur. (Senin gösterdiğin kod aslında bir .c dosyası.)

htod'nun anladığım gibi çalışması için:

  1. senin kodlarının bir kütüphane yapacaksın.
  2. htod ile benim yazdığım .h dosyasını .d'ye çevireceksin
  3. programı oluştururken -L ile birinci adımdaki kütüphaneyi de bağlayacaksın

Alıntı:

>

Bir D dosyası yazıp bunu import ettim hata verdi.

Nasıl çevirdi ve ne hatası verdi? (Aşağıdan anlaşıldığına göre herhalde __gshared ile ilgili olmalı.)

Alıntı:

>

Bende __gshared sözcüğünü ekledim. Bu sefer derlendi ama nedense çalıştırırken windows hata verdi.

Ne hatası verdi? :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

January 21, 2010

Alıntı (canalpay):

>

Bu arada h dosyasını aldığım site: http://www.kadirga.k12.tr/egitim/c_programlama/ders.php-id=4.htm

Gösterdikleri programcıkta sorun oluşturmaz; çünkü tek bir başlık içeren tek bir .c dosyası. Ama hiç normal değildir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]