Jump to page: 1 2 3
Thread overview
SDL kütüphanesi kurulum sorunları
Aug 02
Cos00kun
Aug 02
Cos00kun
Aug 02
Cos00kun
Aug 02
Cos00kun
Aug 02
Cos00kun
Aug 02
Cos00kun
Aug 03
Cos00kun
Aug 03
Cos00kun
Aug 03
Cos00kun
Aug 08
Cos00kun
Aug 08
Cos00kun
Sep 03
Cos00kun
Sep 04
Cos00kun
Aug 24
Cos00kun
Aug 24
Cos00kun
Aug 02
Cos00kun
August 02

Selam.. yapabilen varsa bi ara bana SDL kütüphanesi Windows işletim sisteminde!! nasıl nereye kurulur, nasıl çalıştırılır bi anlatsın rica ediyorum. nette çok dolaşmama rağmen Windowsta kurulum ile ilgili hiç bir dökümantasyona rastlamadım..
yaptıklarım;
SDL (https://www.libsdl.org) sayfası burda..
ancak elbette ben D ilintisini indirdim o da buradan; https://github.com/DerelictOrg/DerelictSDL2

dub ile derledim.. ardından oluşan "DerelictSDL2.lib" dosyasını DMD nin kurulu olduğu klasördeki lib klasörlerine kopyaladım(ne olur ne olmaz diye hem 64 lib hem 32 bitlik lib klasörlerine kopyaladım)..
şimdi sanırım dmd seçeneklerinden linkleri tam bağlayamadım
kod şu;

import derelict.sdl2.sdl;
import derelict.sdl2.image;
import derelict.sdl2.mixer;
import derelict.sdl2.ttf;
import derelict.sdl2.net;

void main() {
    DerelictSDL2.load();
    DerelictSDL2Image.load();
    DerelictSDL2Mixer.load();
    DerelictSDL2ttf.load();
    DerelictSDL2Net.load();
}

buradan sonra (sanırım elbette) dmd -run xxx.d  ile çalıştırınca hata mesajı haklı olarak
 derelict\sdl2\internal\sdl_types.d(32): Error: unable to read module `system`
 derelict\sdl2\internal\sdl_types.d(32):        Expected 'derelict\util\system.d' or
 'derelict\util\system\package.d' in one of the following import paths:
 import path[0] = C:\D\dmd2\windows\bin64\..\..\src\phobos
 import path[1] = C:\D\dmd2\windows\bin64\..\..\src\druntime\import
 ; executing: GOTO EXIT
 - no label found: EXIT
 ; executing: ENDIF
 - Unexpected ENDIF found, without preceding IF.
 To prevent unpredictable behavior, the script is stopped.

veriyor..
"dmd -run xxx.d" komutunda hata yaptığımdan neredeyse eminim "-L-lderelict.sdl2.sdl" kütüphaneyimi eklemeleyim yada direkt dll dosyasını mı eklemeleiyim bilemedim. zira derelict.sdl2.sdl, derelict.sdl2.image ile ilgili bir dosyada bulamadım en son
dmd -LDerelictSDL2 xxx.d denedim ama o da işe yaramadı

August 02

On Tuesday, 2 August 2022 at 06:26:51 UTC, Cos00kun wrote:

>

Selam.. yapabilen varsa bi ara bana SDL kütüphanesi Windows işletim sisteminde!! nasıl nereye kurulur, nasıl çalıştırılır bi anlatsın rica ediyorum. nette çok dolaşmama rağmen Windowsta kurulum ile ilgili hiç bir dökümantasyona rastlamadım..

Aslında DerelictSDL2.lib gibi şeylerle hiç işin yok, Derelict kütüphanesini dub.json/dub.sdl dosyanda bağımlılık (dependency) olarak ekledikten sonra, https://libsdl.org/download-2.0.php sayfasındaki "Runtime Binaries" kısmından indirdiğin SDL2.dll'yi derlediğin çalıştırılabilir (.exe) dosyanın yanına kopyalaman yeterli. Kopyalamayı dub'ın otomatik yapması için copyFiles direktifini kullanabilirsin.

SDL_image ve SDL_ttf gibi ek kütüphaneleri de kullanmak istiyorsan ilgili GitHub sayfalarındaki (örneğin: https://github.com/libsdl-org/SDL_image) "Releases" kısmından dll dosyalarını indirip yine aynı şekilde derlediğin .exe'nin yanına koyman gerekiyor.

Böylelikle DerelictSDL2.load() vb. fonksiyonları çağırdığında ilgili dll dosyaları dinamik bir şekilde yüklenmiş olacak. lib dosyaları ise genellikle kütüphaneyi statik bir şekilde uygulamaya bağlamak için kullanılır.

Son olarak, artık Derelict kütüphanelerinin yerini BindBC kütüphaneleri aldı. Yani Derelict yeni güncellemeler almayacak ve son sürüm kütüphaneleri kullanmak istiyorsan BindBC kullanmanı öneririm. BindBC'nin çalışma prensibi de tam olarak aynı, dinamik bir şekilde dll dosyalarını yükleyip kullanmanı sağlıyor ama bunun yanında -betterC derleyici seçeneğini de destekliyor.

August 02

öncelikle cevap için çok teşekkür ederim.
sanırım şu kütüphane işini kafamda çok büyüttüğüm için oluyor herşey. aslında hepi topu var olan kütüphane dosyasını bir şekilde programa dahil etmekten ibaret herşey. Ancak bir türlü alışamadım şu Dub ve D dilinin bu kütüphane işlerine. Açıkçası Derelict hakkında doğru düzgün bir bilgim bile yok. BindBC için araştıracağım dediklerinizi..
Dediklerinizi birkaç saat sonra uygulayacağım ve sonucu burda paylaşacağım.

August 02
>

Aslında DerelictSDL2.lib gibi şeylerle hiç işin yok, Derelict kütüphanesini dub.json/dub.sdl dosyanda bağımlılık (dependency) olarak ekledikten sonra, https://libsdl.org/download-2.0.php sayfasındaki "Runtime Binaries" kısmından indirdiğin SDL2.dll'yi derlediğin çalıştırılabilir (.exe) dosyanın yanına kopyalaman yeterli. Kopyalamayı dub'ın otomatik yapması için copyFiles direktifini kullanabilirsin.

Şimdi öncelikle zaten SDL kütüphanesi yüklenemediği için exe dosyam oluşamıyor. Ama xxx.d search dosyamın yanına koymama ve dediğiniz gibi yapmama rağmen yine çalıştırmayı başaramadım..

>

Son olarak, artık Derelict kütüphanelerinin yerini BindBC kütüphaneleri aldı. Yani Derelict yeni güncellemeler almayacak ve son sürüm kütüphaneleri kullanmak istiyorsan BindBC kullanmanı öneririm. BindBC'nin çalışma prensibi de tam olarak aynı, dinamik bir şekilde dll dosyalarını yükleyip kullanmanı sağlıyor ama bunun yanında -betterC derleyici seçeneğini de destekliyor.

sizin söylediklerinizden sonra BindBC mantıklı geldi ve kütüphaneyi indirip deiğiniz gibi search dosyamın yanına koymama rağmen "dmd xxx.d" ile çalıştırdığımda tekrar hata mesajları verdi. belkide -L ile linkera dlli göndermek lazım bilemedim..

August 02

Ayrıca bir sorum daha olacak.. Madem lib dosyasını indirip exe yanına koymam yetiyorsa dub dosyama (yok bu arada) neden ekleyeyimki ? o tam olarak ne yapacak ? Ben dub ile çalışmayı sevmiyorum.. Eski kafalıyım gidip elle indireyim, yazayım consoleden falan.

August 02

Kısacası bana bi yarım saatini ayırıp gel bakalım buraya diyerek şöyle Teamviewer olur discort olur ordan bana duvara anlatır gibi sıfırdan (DMD kurulmuş bilgisayarımda) bak şu şöyledir bu böyledir diye anlatacak ve iyilik yap denize at diyecek bir arkadaş lazım :))

Aslında bazı konularda iyiyimdir ancak nedense kritik eşik olan şu kütüphane ekleme çıkartma konularında zayıfım ve bir kere uygulamalı yapılması halinde bundan sonra sorunsuzca herhangi bir Oyun veya Gui kütüphaneleriyle rahatlıkla yüzleşebilecek bir duruma gelirim. Sonrası zaten bende :)

August 02

On Tuesday, 2 August 2022 at 06:26:51 UTC, Cos00kun wrote:

>

...buradan sonra (sanırım elbette) dmd -run xxx.d ile çalıştırınca hata mesajı haklı olarak veriyor..
"dmd -run xxx.d" komutunda hata yaptığımdan neredeyse eminim "-L-lderelict.sdl2.sdl" kütüphaneyimi eklemeleyim yada direkt dll dosyasını mı eklemeleiyim bilemedim. zira derelict.sdl2.sdl, derelict.sdl2.image ile ilgili bir dosyada bulamadım en son
dmd -LDerelictSDL2 xxx.d denedim ama o da işe yaramadı

Windows'da nasıl kuruluyor bilmiyorum ama yardımcı oluruz. Linux'da şöyle:

>

hg clone http://hg.libsdl.org/SDL
mkdir SDL/build
cd SDL/build
../configure
sudo make install
export LD_LIBRARY_PATH=/usr/local/lib
cd ..

Bu arada Derelict emekli olmuş olması lazım

Başarılar...

August 02

valla Linuxta işler her zaman kolay ama zamanında hep tartıştığımız gibi D ve ilintileri Windows kullancılarını çok cezbetmediği için yada yeterince kullanan olmadığı için çok kaynak yok. yada ben henüz çok gerideyim bu konuda bu seçeneği de göz ardı etmemek lazım :)

rahat bir kafayla akşam biraz didineyim bakalım. Hadi didindim oldu bitti bu seferde başımda bu kütüphane fonksiyonlarını nasıl kullanacağım konusu gelecek ya o kısmını bi şekilde tecrübelerimle hallederim. bana ilk hareketi verecek bir güç lazım gerisini hallederim :)

August 02

On Tuesday, 2 August 2022 at 10:23:17 UTC, Cos00kun wrote:

>

Şimdi öncelikle zaten SDL kütüphanesi yüklenemediği için exe dosyam oluşamıyor. Ama xxx.d search dosyamın yanına koymama ve dediğiniz gibi yapmama rağmen yine çalıştırmayı başaramadım..

Olmuyor demek yerine tam olarak ne yaptığını ve aldığın hata mesajlarını yazmanı öneririm.

August 02

On Tuesday, 2 August 2022 at 19:16:09 UTC, Ahmet Sait wrote:

>

Olmuyor demek yerine tam olarak ne yaptığını ve aldığın hata mesajlarını yazmanı öneririm.

ahh Ahmet kardeşim ne yaptığımı ve ne anladığımı bir kafamda oturtabilsem anlatacağım da :)
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.

Şimdi gelelim senin bana salık verdiğin "ne yaptığını ve hata mesajlarını yaz" kısmına..
 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

Kaynak kodum şu;
import std.stdio;
import std.string : fromStringz;
import std.conv;

import bindbc.sdl;
import bindbc.sdl.image;

import bindbc.opengl;

void main()
{
    // Load SDL libs
    const SDLSupport ret = loadSDL();
    if(ret != sdlSupport) {
      writeln("Error loading SDL dll");
      return;
    }
    if(loadSDLImage() != sdlImageSupport) {
      writeln("Error loading SDL Image dll");
      return;
    }

    // Initialise SDL
    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
        writeln("SDL_Init: ", fromStringz(SDL_GetError()));
    }
    scope(exit) {
      SDL_Quit();
    }

    // Initialise IMG
    const flags = IMG_INIT_PNG | IMG_INIT_JPG;
    if ((IMG_Init(flags) & flags) != flags) {
        writeln("IMG_Init: ", to!string(IMG_GetError()));
    }
    scope(exit) {
      IMG_Quit();
    }

    version(OSX) {
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG); // Always required on Mac
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);
    } else {
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
        SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
    }
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
    SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);

    // Create a window
    const windowFlags = SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI | SDL_WINDOW_SHOWN;
    SDL_Window* appWin = SDL_CreateWindow(
        "Example #2",
        SDL_WINDOWPOS_UNDEFINED,
        SDL_WINDOWPOS_UNDEFINED,
        800,
        600,
        windowFlags
    );
    if (appWin is null) {
        writefln("SDL_CreateWindow: ", SDL_GetError());
        return;
    }
    scope(exit) {
        // Close and destroy the window
        if (appWin !is null) {
            SDL_DestroyWindow(appWin);
        }
    }
    // Load image
    SDL_Surface* imgSurf = IMG_Load("grumpy-cat.jpg");
    if (imgSurf is null) {
        writeln("IMG_Load: ", to!string(IMG_GetError()));
    }
    scope(exit) {
        // Close and destroy the surface
        if (imgSurf !is null) {
            SDL_FreeSurface(imgSurf);
        }
    }

    SDL_GLContext gContext = SDL_GL_CreateContext(appWin);
    if (gContext == null) {
      writeln("OpenGL context couldn't be created! SDL Error: ", fromStringz(SDL_GetError()));
      return;
    }
    scope(exit) {
        if (gContext !is null) {
            SDL_GL_DeleteContext(gContext);
        }
    }

    const GLSupport openglLoaded = loadOpenGL();
    if ( openglLoaded != glSupport) {
      writeln("Error loading OpenGL shared library", to!string(openglLoaded));
      return;
    }
    SDL_GL_MakeCurrent(appWin, gContext);

    SDL_GL_SetSwapInterval(1); // Enable VSync

    // Creating a texture from SDL Surface
    glEnable(GL_TEXTURE_2D);
    GLuint textureID = 0;
    glGenTextures(1, &textureID);
    glBindTexture(GL_TEXTURE_2D, textureID);
    const mode = imgSurf.format.BytesPerPixel == 4 ? GL_RGBA : GL_RGB;
    glTexImage2D(GL_TEXTURE_2D, 0, mode, imgSurf.w, imgSurf.h, 0, mode, GL_UNSIGNED_BYTE, imgSurf.pixels);
    scope(exit) {
      glDeleteTextures(1, &textureID);
    }

    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

    glBindTexture(GL_TEXTURE_2D, 0);

    // Initializin matrices
    GLenum error = GL_NO_ERROR;

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    //Initialize Projection Matrix
    glMatrixMode( GL_PROJECTION );
    glLoadIdentity();

    //Check for error
    error = glGetError();
    if( error != GL_NO_ERROR ) {
      return;
    }

    //Initialize Modelview Matrix
    glMatrixMode( GL_MODELVIEW );
    glLoadIdentity();

    //Check for error
    error = glGetError();
    if( error != GL_NO_ERROR ) {
      return;
    }

    //Initialize clear color
    glClearColor( 0f, 0f, 0f, 1f );

    //Check for error
    error = glGetError();
    if( error != GL_NO_ERROR ) {
      return;
    }

    glFlush();
    SDL_GL_SwapWindow(appWin);

    // Polling for events
    bool quit = false;
    while(!quit) {
        SDL_PumpEvents();

        // Cleaning buffers
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glClearColor( 0f, 0f, 0f, 1f );

        // Render something
        glBindTexture(GL_TEXTURE_2D, textureID);
        glBegin( GL_QUADS );
          glColor3f(1.0f, 1.0f, 1.0f);
          glTexCoord2f(0f, 0f);
          glVertex2f( -0.5f, -0.5f );

          glColor3f(1.0f, 0.0f, 0.0f);
          glTexCoord2f(1f, 0f);
          glVertex2f( 0.5f, -0.5f );

          glColor3f(0.0f, 1.0f, 0.0f);
          glTexCoord2f(1f, 1f);
          glVertex2f( 0.5f, 0.5f );

          glColor3f(0.0f, 0.0f, 1.0f);
          glTexCoord2f(0f, 1f);
          glVertex2f( -0.5f, 0.5f );
        glEnd();


        //Update screen
        glFlush();
        SDL_GL_SwapWindow(appWin);

        SDL_Event event;
        while (SDL_PollEvent(&event)) {
            if (event.type == SDL_QUIT) {
                quit = true;
            }

            if (event.type == SDL_KEYDOWN) {
                quit = true;
            }
        }
    }

}

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
« First   ‹ Prev
1 2 3