Thread overview
August 07, 2013

mysqlclient.dll dosyasını hiçbir yerde bulamadım tek bulabildiğim mysqlclient.lib dosyası ama dll de lazım.

Sanırsam lib den dll elde edilmiyor bu dll i nasıl elde edebilirim?

Zekeriya

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

August 07, 2013

Hocam connector C API iceren indirme linki sunuyor mysqlclient.lib var ama DLL yok. Onun yerine libmysql.dll onermisler de isine yarar mi kullanilir mi zekeriya test ettiyse iyi olurdu aslinda.

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

August 07, 2013

Bir de "MySQL Connector" var. Acaba "client" yerine artık öyle mi deniyor ve o yüzden onun dll'ini mi bulman gerekiyor?

Ali

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

August 07, 2013

Hocam mysql olayı benim için çok önemli ve bunu mutlaka yapmam gerekiyor. MYSQL için yaptığım işlemleri adım adım anlatayım hem belki başka arkadaşların da işine yarar ve sizlerden bir ricada bulunacağım :)

Önce https://github.com/adamdruppe/misc-stuff-including-D-programming-language-web-stuff adresinden gerekli mysql kütüphanesini indirdim.
Daha sonra http://dev.mysql.com/downloads/connector/c/ adresinden source indirdim ve içerisindeki dll i çıkarttım ve implib ile onu lib haline çevirdim ve projeye dahil ettim. Programı derledim ve o da ne bir hata

hata açıklamasında ise fonksiyonların bulunmadığı yazıyor ve bende extern yapılan yerde extern(System) yerine extern(C) olarak değiştirdim ve kodlar başarıyla derleniyor.

Şimdi ise sıra mysql bağlantısında bağlanıyorum şifre herşey doğru veya yanlış fark etmiyor istisnasız Access Violation hatası veriyor.

Ali hocam Salih hocam sizlerden bir ricam var siz linux kullanıyorsunuz bunu linux da deneyebilir misiniz?

Teşekkürler

Zekeriya

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

August 07, 2013

Sanırım D dilinde bir bug var.

	this(string host, string user, string pass, string db) {
		mysql = enforceEx!(DatabaseException)(
											  mysql_init(null),
											  "Couldn't init mysql");
		enforceEx!(DatabaseException)(
									  mysql_real_connect(mysql, toCstring(host), toCstring(user), toCstring(pass), toCstring(db), 0, null, 0),
									  error());
		dbname = db;
		writeln("22222222");

		// we want UTF8 for everything
		writeln("333333333");

		query("SET NAMES 'utf8'");
		//query("SET CHARACTER SET utf8");
	}

Kod bu burada dbname sınıf içerisinde bir eleman ve kodlarımız dbnameye eşitleme yaparken hata veriyor. writeln (db) dediğimde ise garip gurup harfler çıkıyor aynı işlemi fonksiyonun başında yapınca ise sıkıntı yok sanırsam fonksiyon çağırıldıktan sonra altındaki mysql bağlanma komutları ebp registerını bozuyor o yüzden adrese erişilmiyor. Peki soru şu neden adresi kayıyor acaba yanlış bir fonksiyona mı erişiliyor? Kütüphane mi hatalı(hiç sanmıyorum) extern(System) ile mi alakalı?

Zekeriya

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

August 07, 2013

Evet olabilir hocam eski sürümün dll sini bulup deneyeceğim.

Demin aklıma şu da geldi.
extern(System) neden yazılmış? Acaba ben implib ile lib oluştururken extern(C) için oluşturduğum için mi olmuyor? Belkide extern(System) için lib oluşturmalıyım veya onun için birşey yapmalıyım.

Zekeriya

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

August 08, 2013

Sorun dediğim şey ile alakalıymış evet

http://forum.dlang.org/thread/uzkrkzzcrjqabolvzfjv@forum.dlang.org adresinde tartışmışlar aynı konuyu.

Alıntı:

>

I found that it was @4 suffix that was missing. With a
libmysql.def file as below:

LIBRARY libmysql
EXETYPE NT
SUBSYSTEM WINDOWS
EXPORTS
_mysql_init@4 = mysql_init

I was able to generate working libmysql.lib file with implib
(with /system switch).

That, with changing from extern (C) to extern (System), removed
the problematic issue.

Thank you for all your hints!

Fakat ben bunu uyguladım ama hala sorun var :)

Alıntı:

>

You shouldn't have to manually create a .def file. Try using
coffimplib (I think it's bundled with dmc?) instead of implib and
use it on libmysql.lib (coffimplib libmysql.lib _libmysql.lib,
back up the original libmysql.lib, replace the original with the
generated _libmysql.lib, and then link to it). Then create your
headers with extern(System). It seems that adding it manually
into the .def file is working for you, but it's a lot more effort
than needed.

Ve hemen altında bunu diyor def i otomatik olarak oluşturmakla alakalı denedim bunu da ama olmadı

Alıntı:

>

C:\Users\TalhaZekeriya\Documents\GitHub\Script\source>coffimplib libmysql.lib li
bmysql.def -e
Error: missing archive signature

Hatasını verdi önerilerinizi ve yardımlarınızı bekliyorum :)

Zekeriya

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

August 08, 2013

Bilmiyorum her nasıl oldu ise derlendi ve çalışıyor :D

Teşekkürler :)

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

August 07, 2013

Böyle hatalarla bir yapının iki tanımı birbirini tutmadığında karşılaşılabilir. Örneğin, elindeki .d ilintileri MySql ile ilgili bir yapının daha eski bir sürümüne uygundur ama aynı yapı senin elindeki .c başlıklarında daha büyüktür (ek üyeleri vardır).

Ali

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