August 03

On Tuesday, 2 August 2022 at 22:06:52 UTC, Cos00kun wrote:

>

aslında şunu öğrenmek istiyorum diyerek konuyu sıfırdan ele alırsak; elimde D derleyicim var.. SDL ile notepad++ yada farketmez herangi bir editor ile D dilini ve SDL kütüphanesini kullanarak bir Form yada Pencere çizdirmek istiyorum ekranda. İlk hedefim sadece bu.

Aslında bu kurulum olayları Raylib'de daha kolay ama libSDL'i kullanan bir kütüphane ile de çok şey yapılabilir. SDL bırakalı uzun zaman oldu ve web assembly desteği de bulunduğunu görünce elimden geldiği kadarıyla kurulumunu anlattım:

https://forum.dlang.org/post/qnzmxceqesmcsmfmzxyr@forum.dlang.org

MiniGW'ye ihtiyaç duymayan cmake for windows olması lazım. Zaten dub dmd ile birlikte otomatik geliyor. Yapabileceklerini resmi web sitesinde görünce şaşıracaksın. Zaten arkası sağlam, eğitimciler destekliyor. Raylib candır!

Başarılar...

August 03

On Wednesday, 3 August 2022 at 04:45:27 UTC, Salih Dincer wrote:

>

Aslında bu kurulum olayları Raylib'de daha kolay ama libSDL'i kullanan bir kütüphane ile de çok şey yapılabilir. SDL bırakalı uzun zaman oldu ve web assembly desteği de bulunduğunu görünce elimden geldiği kadarıyla kurulumunu anlattım:

https://forum.dlang.org/post/qnzmxceqesmcsmfmzxyr@forum.dlang.org

MiniGW'ye ihtiyaç duymayan cmake for windows olması lazım. Zaten dub dmd ile birlikte otomatik geliyor. Yapabileceklerini resmi web sitesinde görünce şaşıracaksın. Zaten arkası sağlam, eğitimciler destekliyor. Raylib candır!

Başarılar...

Raylib kütüphanesini biliyorum iyi hatırlattın ve bayağı detaylı döküman hazırlamışsın sağolasın.. Dub zaten var ve cmake de var zamanında Ali hoca cmake konularını bana anlatmıştı sağolsun. Ama ben SDL ile çalışmayı yeğledim daha doğrusu öğrenmeyi diyelim. Yine de bir kurmaya çalışayım bir sorunla karşılaşırsam yazarım. umarım SDL kurulumunu da yapabilirim.

August 03

On Tuesday, 2 August 2022 at 22:06:52 UTC, Cos00kun wrote:

>

Dediklerinizi dikkate alarak Derelict yerine ondan vazgeçip BindBC ile denemeler yapmak istedim.

1- https://github.com/BindBC/bindbc-sdl adresinden ziplı dosyayı indirdim ve klasöre açtım

2- windows cmd ile bu klasöre girerek "dub.sdl" dosyasını çalıştırdım(hiç bir değişiklik yapmadan). dub bana lib klasörü oluşturdu sadece orada bulunan "BindBC_SDL.lib" dosyasını kaynak dosyamın bulunduğu klasöre kopyaladım.

3- https://libsdl.org/download-2.0.php adresinden SDL2-2.0.22-win32-x86.zip Runtime Binaries: indirdim ve içindeki "SDL2.dll" dosyasınıda kaynak dosyamın bulunduğu klasöre attım.

4- https://github.com/BindBC/bindbc-opengl buradan da opengl yi dub ile halledip oluşan BindBC_OpenGL.lib dosyasını kaynak dosyamın yanına attım

Öncelikle hem eski kafalıyım ama hem de lib dll vs. nasıl çalışıyor bilmiyorum deme hakkın yok kimse kusura bakmasın. "Ben eski kafalıyım vim seviyorum ama hiç bir klavye tuşunu da bilmiyorum" demek ne kadar saçmaysa senin dediğin de en az o kadar mantıksız.

.lib dosyaları kodunu derlerken bağlayıcıya (yada direk derleyiciye) argüman olarak verdiğin "statik" kod kütüphaneleri oluyor. Bu dosyalar "dinamik" bir şekilde LoadLibrary ve GetProcAddress kullanılarak yüklenemez. Bu statik kütüphane dosyalarını .exe'nin yanına koymak da hiçbir işe yaramaz ne yazık ki.

.dll dosyaları ise "Dynamic Link Library" açılımından da anlaşılacağı gibi LoadLibrary gibi yöntemlerle çalışma zamanında yüklenebilir vaziyetteki kütüphane dosyalarıdır. Dinamik kütüphaneleri Windows'ta kullanmanın 2 yolu var:

  • extern fonksiyonlar tanımlayıp bu .dll dosyasını senin için otomatik yükleyen bir .lib dosyası (nam-ı diğer: "import library") kullanmak.

  • .dll'yi LoadLibrary ile açıp GetProcAddress ile kodunda tanımladığın fonksiyon göstericilerinin (function pointer) içini doldurmak. Ardından fonksiyon göstericilerini tıpkı bir fonksiyon gibi kullanmak.

BindBC iki yöntemi de destekliyor ama varsayılan olarak dinamik ayarda çalışıyor. Dinamik yükleme genel olarak tercih sebebi çünkü hata durumunda ne yapılacağını kendin kodlayarak belirlemeni ve gerekirse kütüphanenin eski sürümleriyle uyumlu bir şekilde çalışmaya devam edebilmeni mümkün kılıyor. Ayırca indirdiğin kütüphanenin yanında import library hazır gelimiyorsa kendin oluşturman gerekebilir.

Ben yine amele gibi elle paket indirip derlemek yerine dub kullanmanı öneriyorum, ama yine senin bileceğin iş. BindBC paketleri ortak bir bindbc-loader paketine ihtiyaç duyuyor o yüzden onu da derlerken eklemen gerekiyor. (Tabi dub bağımlılık ağacını otomatik çözümlüyor.)

dmd -i -version=SDL_201 -version=GL_AllowDeprecated -version=SDL_Image yeni_2.d -I"bindbc-sdl-1.2.1\source" -I"bindbc-opengl-1.0.2\source" -I"bindbc-loader-1.0.1\source"
  • -version=SDL_201 SDL_WINDOW_ALLOW_HIGHDPI kullandığın için
  • -version=GL_AllowDeprecated glBegin gibi eski fonksiyonlar için
  • -version=SDL_Image bindbc-sdl'nin image modülünü aktif etmek için
  • -I argümanları kaynak kod import ettiğin klasörler için
    Error: unable to read module 'sdl' hatalarının sebebi -I eksik olması
  • -i ise -I ile import edilen koddan dolayı oluşan bağlayıcı hatalarının önüne geçmek için
August 03

Zahmet etmiş emek harcamışsın cevap için önce teşekkür edeyim.
Ancak..
Konuşma tarzın hoş değil! hakaret içermiyor ama hoş değil. Benimle bu tarz konuşacaksan bana bir daha cevap yazma! Belki başkası için normal gelebilir ama ben sevmiyorum bu tarz karşında çocuk varmış edasıyla sert konuşma tarzlarını.

August 03

On Wednesday, 3 August 2022 at 14:41:07 UTC, Cos00kun wrote:

>

cevap için önce teşekkür

DConf'tayım. Deneyip yazacak vakit bulamıyorum. :/ Mike Parker, libsdl.org'da anlatıldığı gibi olması gerektiğini söylüyor. Örneğin, loadsdl (gibi bir şey) önemliymiş. Deneyeceğiz... :)

Mike da derelict'in unutulmasını ve bindbc'yi öneriyor.

Ali

August 03

On Wednesday, 3 August 2022 at 20:45:07 UTC, Ali Çehreli wrote:

>

On Wednesday, 3 August 2022 at 14:41:07 UTC, Cos00kun wrote:

>

cevap için önce teşekkür

DConf'tayım. Deneyip yazacak vakit bulamıyorum. :/ Mike Parker, libsdl.org'da anlatıldığı gibi olması gerektiğini söylüyor. Örneğin, loadsdl (gibi bir şey) önemliymiş. Deneyeceğiz... :)

Mike da derelict'in unutulmasını ve bindbc'yi öneriyor.

Ali

Canlı olarak youtubeden büyük bölümünü, daha sonra tamamını iyi ingilizce bilen bir arkadaşla izledim. Hiç önemli değil geldiğin zaman bol bol vaktimiz olacak nasılsa sen keyfine bak ali hocam :)

August 08

Artık SDL ve Raylib kütüphanelerini statik olarak problemsiz ekleyebiliyorum ve uygulama başlatabiliyorum. Emeği geçen yardımı dokunan arkadaşlara tekrar teşekkür ederim. Elbette hala bazı soru işaretleri var ve dinamik kütüphane dosyalarıyla hala başım dertte ama en azından proje yapabilecek düzeyde çalıştırıp derleme yapabiliyorum.
Maalesef eşimde şu covid illetine o kadar zaman direndikten sonra yakalandı bu sebeple birkaç gündür bu işlerle ilgilenemiyorum ancak birkaç gün içinde tekrar D ile hafızamı zorlayıp bilgileri tazeledikten sonra hani zamanında bahsedipte başlayamadığımız "Mangala" adlı oyunu acemi bir gözle yapmaya çalışacağım :p

August 08
On Monday, 8 August 2022 at 05:59:43 UTC, Cos00kun wrote:
> Artık SDL ve Raylib kütüphanelerini statik olarak problemsiz ekleyebiliyorum ve uygulama başlatabiliyorum.

SDL'i nasıl yüklendin merak ettim. Bir ara yazarsan sevinirim.

> Maalesef eşimde şu covid illetine o kadar zaman direndikten sonra yakalandı bu sebeple birkaç gündür bu işlerle ilgilenemiyorum

Geçmiş olsun, tez zamanda iyileşir inşaallah.

SDB@79
August 08
On Monday, 8 August 2022 at 13:23:51 UTC, Salih Dincer wrote:
> SDL'i nasıl yüklendin merak ettim. Bir ara yazarsan sevinirim.
>
elbette yazarım. Bu konuda sizlere göre çok geride biri olarak detaylıca yazar paylaşırım birkaç gün içinde. Çok sağol geçmiş olsun dileklerin için.


August 09
On 8/2/22 15:06, Cos00kun wrote:

> aldığım hata mesajı şu;
>
>        C:\Users\CoCo\Desktop\Yeni>dmd yeni_2
>        yeni_2.d(93): Error: unable to read module `sdl`
>        yeni_2.d(93):        Expected 'bindbc\sdl.d' or
> 'bindbc\sdl\package.d' in one of the
>        following import paths:
>        import path[0] = C:\D\dmd2\windows\bin\..\..\src\phobos
>        import path[1] = C:\D\dmd2\windows\bin\..\..\src\druntime\import

O bir derleme hatası. Yani, daha kütüphane konusuna gelinmemiş. dmd, bindbc.sdl modülünün dosyasını bulamadığını söylemeye çalışıyor. -I seçeneği ile bildirilebilir:

> dmd -I <falanca_klasör>

<falanca_klasör>'ün altında bindbc diye bir klasör olmalı ve onun içinde sdl.d olmalı. (Hata mesajında belirtildiği gibi, bindbc\sdl\package.d de olabilir.)

Ali