Thread overview
SFML&DSFML ..
May 16, 2020
cos00kun
May 17, 2020
cos00kun
May 24, 2020
cos00kun
May 24, 2020
cos00kun
May 25, 2020
cos00kun
May 25, 2020
cos00kun
May 16, 2020

SFML Kütüphanesi sürekli kendini yenileyerek gelişiyor. Bu kütüphanenin güncel D ilintisi 2016 tarihinde yazılmış.(Aslında 2 sene önce falan güncellenmiş görünüyor ama soru için böyle yazdım). Bu durumda yine de güncel SFML Kütüphanesi için bu bir sorun teşkil eder mi ?

ikinci sorum daha basit olsa gerek tabiki bilene ;-) ilintilerde kütüphane fonksiyonlarının D dilinde kulllanımları ve yazım kuralları, her programlama dili için aynı şekilde midir? (elbette Dilin kendi olanaları ve yazım kurallarına bağlı kalarak).

Teşekkürler..

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

May 16, 2020

Ben soruyu anlamadım. :)

İlgili olarak aklıma gelen bir şey: Bazı durumlarda ilinti fonksiyonu önce yabancı dildeki fonksiyona olabildiğince karşılık gelecek biçimde yazılıyor. Bu ilinti modülü çoğunlukla D için yeterince kullanışlı olmuyor. Örneğin, C dili kütüphanesi 'kaynakAyir(Kaynak**)' ve 'kaynakGeriVer(Kaynak*)' gibi iki işlev içeriyorsa bunlar önce D'ye aynen geçiriliyor, ama sonra örneğin o fonksiyonları kurucu ve sonlandırıcı içinden otomatik olarak çağıran bir D yapısı tanımlanabiliyor.

Örnek veremem ama hem mantıklı hem de bu konunun konuşulduğunu hatırlıyorum. :)

Ali

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

May 17, 2020

Alıntı (acehreli):

>

Ben soruyu anlamadım. :)

Ben anlatamadım diyelim :)

Tekrar deneyeyim; diyelimki bugün bir kütüphane yazdım c++ ile ve adı "KTPHN" bununda hemen d ilintisini yazdım onun da adı "DKTPHN". Aradan geçti 5 yı..l ve bu arada C++ ile yazılan "KTPHN" kütüphanemizi defalarca güncelledim yani v5 sürümünü çıkardım. Bu durumda D ilintisini de güncellemek gerekiyor mu diye sormaya çalışmıştım
muhtemelen İlinti olayını tam bilmediğimden garip bir soru da olmuş olabilir.

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

May 17, 2020

Tabii ki: Yeni bir fonksiyon eklendiğinde veya arayüzde kullanılan bir yapıya yeni bir üye eklendiğinde ilintinin de güncellenmesi gerekir. gtkD'nin, ilintilerini otomatik olarak ürettiğini duymuştum ama nasıl yaptıklarına hiç bakmadım.

Ali

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

May 24, 2020

DSMFL Kütüphanesini kullanan bir arkadaşamız bunu Linux Mint işletim sisteminde nasıl kullanacağımı sıfırdan bana anlatabilir mi ? bir haftadır uğraşmama rağmen hala bunu başarabilmiş değilim. :-D
Şimdi burada hata mesajlarını yazıp bunu denedin mi? şunu yaptın mı? şeklinde ilerlemekte mümkün olsa bile eminimki sıfırdan bunu birisinin anlatması daha hızlı sonuç verecektir..
Not: sistemim 64 bit Linux Mint, dmd ve DUB yüklü..

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

May 25, 2020

Ali hocam bir de beni düşünün her gün 1 saat uğraşarak 10 günü devirdim ama savaşmaya devam ediyorum :-D
Aslında Bu dilin neden C++ gibi popüler olmayacağının bir nedeni de bu zaten! baştan beri söylüyorum. Bu işin bir ayağı her zaman pazarlamadır. Bir ilntide bile bu kadar takla atılıyorsa ve çözüm için zorlanılıyorsa pazarlamanızı kötü yapıyorsunuz demektir.. yapacak birşey yok yine de D dilini sevmeye devam ;-)

Ben denemeye devam edeceğim ancak şimdi arkamda daha yeni bilgiler oldu ve inanın bana çalıştıramasak bile anlattklarınızdan birçok yeni bilgi öğrendim.Bu bilgiler bile ufkumu çok genişletiyor.. Size teşekkür etmekten yoruldum :blush: Allah razı olsun ne diyeyim..

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

May 25, 2020

Aynı hataları bende aldım :) Ali hocam mutlaka dikkat etmişsinizdir ama yinede söylemek istiyorum. DSFML aynı zamanda DSFMLC yede bir bağımlılık arz ediyor ve kurulması gerekiyor an azından hazırlayan öyle söylüyor. Bunun konumuzla bir alakası var mı ?

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

May 25, 2020

Ben denedim ama pes ettim.

Önce, kişisel sorunlarım ve şikayetlerim:

  • Aramızda kalsın ama dub'la aram bir çok nedenden ötürü hiç iyi değil. Nedenlerden birisi, bu tür programların kötü niyetli programların projelere sızmalarını çok kolaylaştırmaları: Ben tek modülü kullanmak istiyorum; o modül yüzlerce başka modülü getirebiliyor.

Başka bir neden, bu tür programların ne olup bittiğini programcıdan gizliyor olması. İşler yolunda gittiğinde herşey harika: 'dub init' diyorum mucizevi bir biçimde bir "projem" oluyor; 'dub add dsfml' diyorum ve mucizevi bir biçimde dsfml projeme ekleniyor; 'dub run' diyorum ve mucizevi bir biçimde program oluşuyor ve çalışıyor.

Ne yazık ki her zaman öyle olmuyor.

  • dub ne kadar kolaycı olmaya çalışsa da ve belki de en aptal programcıya bile yardım ediyor gibi görünse de, dsfml o derece uzmanlık bekliyor çünkü ne sfml'in nereden edinileceği ne de derleme sorunlarıyla bilgi içeriyor. Mucize gerçekleşecek ve her şey yolunda gidecek. Belki...

  • dsfml'in sitesinde dmd 2.068.2'yi görüyorum: http://dsfml.com/downloads.html Oldukça eski bir derleyici... Bu dsfml'in artık desteklenmediğini mi gösteriyor?

Başlayalım...
'
$ dmd --version
DMD64 D Compiler v2.088.0
'
Benim ki de eski ama bu saatten sonra 2.068.2'ye inmeyeceğim. Umarım çalışır... Bir klasör yapıp dub'a güveneceğim:
'
$ mkdir dsfml_deneme
$ cd dsfml_deneme/
$ dub init
Package recipe format (sdl/json) [json]: sdl
Name [dsfml_deneme]:
Description [A minimal D application.]:
Author name [Ali Çehreli]:
License [proprietary]:
Copyright string [Copyright © 2020, Ali Çehreli]:
Add dependency (leave empty to skip) []:
Successfully created an empty project in '/home/ali/personal/deneme/d/dsfml_deneme'.
Package successfully created in .
'

dsfml'in kendi sitesi kurulumu ile bilgi içermediğinden code.dlang.org'a gidip dsfml'i buluyorum:

https://code.dlang.org/packages/dsfml

Oradan öğrendiğim gibi projeme ekliyorum:
'
$ dub add dsfml
Adding dependency dsfml ~>2.1.1
'

dsfml'in sitesinden bir örnek program alıyorum:

http://dsfml.com/doc.html

Ve dub'ın oluşturduğu kaynağı onunla değiştiriyorum:

dsfml_deneme/source/app.d

Şu mübarek bayram gününde mucize bekliyorum (ama henüz sfml'in kurulmamış olduğu aklımda; onu sonra halledeceğim):
'
$ dub run
Fetching dsfml 2.1.1 (getting selected version)...
Performing "debug" build using /usr/bin/dmd for x86_64.
dsfml:system 2.1.1: building configuration "library"...
dsfml:audio 2.1.1: building configuration "library"...
dsfml:window 2.1.1: building configuration "library"...
dsfml:graphics 2.1.1: building configuration "library"...
dsfml:network 2.1.1: building configuration "library"...
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(142,13): Deprecation: initialization of immutable variable from static this is deprecated.
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(142,13): Use shared static this instead.
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(143,13): Deprecation: initialization of immutable variable from static this is deprecated.
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(143,13): Use shared static this instead.
dsfml 2.1.1: building configuration "library"...
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(142,13): Deprecation: initialization of immutable variable from static this is deprecated.
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(142,13): Use shared static this instead.
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(143,13): Deprecation: initialization of immutable variable from static this is deprecated.
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/network/ipaddress.d(143,13): Use shared static this instead.
'

Yukarıdaki uyarılar benim dmd'm daha yeni olmasından kaynaklanıyor.

Hiç olmazsa program derleniyor ve bağlayıcı (linker) hataları görüyorum. dub ve dsfml'in ortaklaşa hazırlamış oldukları komut satırında benim ortamımda bulunmayan kütüphane dosyaları var:
'
dsfml_deneme ~master: building configuration "application"...
Linking...
/usr/bin/ld: cannot find -ldsfmlc-audio
/usr/bin/ld: cannot find -ldsfmlc-system
/usr/bin/ld: cannot find -ldsfmlc-graphics
/usr/bin/ld: cannot find -ldsfmlc-window
/usr/bin/ld: cannot find -ldsfmlc-network
collect2: error: ld returned 1 exit status
'

Bu noktada yapılması gereken, bayramlık ağzımı kapalı tutup dsfml'i ve bu deneme klasörünü kaldırmak. Çünkü ben, gereken her şeyi yaptım: dub'a güvendim, projemi kurdum, dsfml'i buldum, gerektiği gibi kurdum ve aldığım hata, dsfml'in kütüphane dosyalarının bulunamadığı ile ilgili. Bitmiş olması gerek: söz verdiler; yapamadılar. Ümit devam ediyor. :)

O hata mesajları, sistemimde libdsfml-audio.so veya libdsfml-audio.a gibi dosyalar bulunması gerektiğini belirtiyor. (-l kullanılmışsa, başına lib gelir sonuna da ya .so ya da .a)

find marifetiyle önce /usr'ın altında arıyorum; bir şey bulamayınca dub'ın dosyalarının ~/.dub klasöründe olduklarını hatırlayarak home klasörümde arıyorum:
'
$ find ~ | grep 'dsfml.*.so'
'

Adında dsfml geçen ve sonu .so diye biten dosya yok. .a arayalım:
'
$ find ~ | grep 'dsfml.*.a'
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/libdsfml_audio.a
[...]
'

Anlaşıldı: Dinami dosya değil, .a kullanmışlar. Ancak, burada büyük bir sorun var: dosya adları bağlayıcının hata mesajından anladığımız gibi değil: Hata mesajında tire var, dosya adında alt çizgi. Acaba dsfml'de bir değişiklik mi oldu? Acaba eskiden bir türlüydü de şimdi başka türlü mu?

Ama olaya bakın: dub'ın sözüyle yola çıktım; tanımadığım projelerin dosyaları arasında doğruyu arıyorum. Yuh!

Deneme projemin klasörü içine hata mesajındaki dosya isimlerine uygun symbolic link'ler oluşturuyorum. Örnek:

'
$ ln -s /home/ali/.dub/packages/dsfml-2.1.1/dsfml/libdsfml_audio.a libdsfmlc-audio.a
'

Saf ben: Buradaki kütüphaneler proje oluşturulurken normalde kullanılmaz ki; Linux zararlı olabilen kütüphanelerin haberimiz olmadan bağlanmalarını önlemek için ancak sistem klasörlerini (veya dub'ın söylediği yerlerdeki) kütüphaneleri kullanılır.

Bu noktada dub'ı geride bırakıyorum ve kendime yeni bir klasör oluşturup içine bir Makefile koymaya karar veriyorum.

Ama önce sfml'i kurayım. Bir şekilde onun pakedinin adını öğreniyorum ve sistemime kuruyorum (gereken yerde Y ve Enter ile):
'
sudo apt-get install libsfml-dev
'
Denediğim Makefile şu:
'
deneme:
dmd -I/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src
app.d
-L-L/home/ali/.dub/packages/dsfml-2.1.1/dsfml
-L-ldsfml
-L-ldsfml_audio
-L-ldsfml_graphics
-L-ldsfml_network
-L-ldsfml_system
-L-ldsfml_window
-L-lsfml-audio
-L-lsfml-graphics
-L-lsfml-network
-L-lsfml-system
-L-lsfml-window
'

İşler çok daha iyi giderken bağlayıcı yeni bir hata gösteriyor:
'
/home/ali/.dub/packages/dsfml-2.1.1/dsfml/src/dsfml/audio/sound.d:55: undefined reference to `sfSound_construct'
'

O satıra gidince sfSound_construct diye bir işlev çağrıldığını görüyorum. Ancak, o işlev sfml ile gelen kütüphanelerin hiçbirisinde geçmiyor.

Bu noktada pes ediyorum ve bu mesajı yazıyorum. :)

Ali

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

May 26, 2020

dub konusunda bende pes ettim..
Peki Ali hocam bu durumda ben bu kütüphaneyi nasıl kullanacağım ? dub paket yönetici umrumda değil ama nasıl bu kütüphane ile bir çalışma yapabilirim ?

DSFML git reposito: https://github.com/Jebbs/DSFML
DSFMLC git reposito: https://github.com/Jebbs/DSFMLC
SFML git reposito: https://github.com/SFML/SFML

ben DSFML yi indirip dub yardımıyla çalıştırdığımda "'libdsfml.a'" adlı bir kütüphane dosyası oluştu. tamam bunu alır kaynak dosyamla kullanırım dedim.
Ancak DSFMLC ve SFML sanırım cmake kurulum istiyordu ancak bunu beceremedim.. araştırmalarım sonucu cmake için en son "'cmake .'" komutunu kullandım ancak bu seferde şöyle bir hata aldım;

'coco@CoCo:~/Masaüstü/s/SFML$ cmake .
-- The C compiler identification is GNU 7.5.0
-- The CXX compiler identification is GNU 7.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/x86_64-linux-gnu/libX11.so
-- Found OpenGL: /usr/lib/x86_64-linux-gnu/libOpenGL.so
-- libudev stable: 1
-- Found UDev: /lib/x86_64-linux-gnu/libudev.so
-- include: /usr/include
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find OpenAL (missing: OPENAL_LIBRARY OPENAL_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE)
/usr/share/cmake-3.10/Modules/FindOpenAL.cmake:96 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
cmake/Macros.cmake:364 (find_package)
src/SFML/Audio/CMakeLists.txt:69 (sfml_find_package)

-- Configuring incomplete, errors occurred!
See also "/home/coco/Masaüstü/s/SFML/CMakeFiles/CMakeOutput.log".'

bu durumda hata nerden kaynaklanıyor olabilir acaba ?

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

May 25, 2020

Herhalde... O da bir ilinti mi? Öyleyse neden dub halletmiyor? Değilse o nasıl kuruluyormuş?

Ali

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