Forum: Projeler dkv RSS
Mysql'i D'ye Yerleştirebilir Miyiz ?
canalpay (Moderatör) #1
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Mysql'i D'ye Yerleştirebilir Miyiz ?
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
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
"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
canalpay (Moderatör) #3
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
"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 .
acehreli (Moderatör) #4
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
canalpay:
parçalama arızası ne olduğunu ve neden böyle bir hata verir hiç bir şey bilmiyorum :-D )

Bellek erişim hatası.

?(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
canalpay (Moderatör) #5
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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.
acehreli (Moderatör) #6
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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

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ı.)

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

Ne hatası verdi? :)

Ali
canalpay (Moderatör) #7
Kullanıcı başlığı: Can Alpay Çiftçi
Üye Tem 2009 tarihinden beri · 1133 mesaj · Konum: İzmir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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…

Ortada bir yanlış varsa benden kaynaklanmıyor. Çünkü ben C'yi hata yapacak kadar bilmiyorum :-)
acehreli (Moderatör) #8
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4511 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
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
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Forum: Projeler dkv RSS
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-10-20, 23:56:29 (UTC -07:00)