Autor Wątek:  Odp: Exe - uniezależnienie od Windowsa  (Przeczytany 7127 razy)

0 użytkowników i 1 Gość przegląda ten wątek.

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Exe - uniezależnienie od Windowsa
« dnia: 01 Sierpnia 2017, 13:08:54 »
Witam,

Chciałem się zabrać za uniezależnienie exe od Visual Studio i kompilatora Windowsa. Po modyfikacji będzie można programować na kompilatorze MinGW i przy użyciu IDE typu code::blocks, a później to już tylko krok do wersji Maszyny na Linuxa. To wiąże się z kilkoma zmianami. Pierwszym problemem na który się natknąłem jest DirectX. To biblioteka wyłącznie pod Windowsa (o ile coś się nie zmieniło) i potrzebna jest jakaś alternatywa do obsługi dźwięku i grafiki. Stąd moje pytanie: Zna ktoś jakąś bibliotekę (lub biblioteki), która może zastąpić DirectX tak aby nie odbiło się to znacząco na jakości?

Jak skompletuje biblioteki to rozpocznę porządki w dyrektywach typu #define i #pragma.

Offline Stele

  • Zasłużony dla Symulatora
  • Wiadomości: 10133
    • Zobacz profil
  • Otrzymane polubienia: 2609
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #1 dnia: 01 Sierpnia 2017, 13:20:38 »
Milek kompiluje już exeki na linuksie. Nieme, ale ponoć działają. DirectX jest używany tylko do dźwięku.
Mój kanał youtube

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #2 dnia: 01 Sierpnia 2017, 13:43:38 »
W takim razie napiszę do niego, a @firleju napisał mi na priv że maszyna nie jest dostępna na linux.

Edit: Odwiedziałem się że mój pomysł nie został jeszcze zrealizowany, więc moje pytanie jest nadal aktualne. Milek nie używa żadnego ide, więc mój pomysł na dostosowanie maszyny pod mingw i c::b (nie gcc) jest jeszcze możliwy do zrealizowania. Wracając do pierwotnego pytania to jeżeli DirectX jest tylko do dźwięku (SFML może być alternatywą).
« Ostatnia zmiana: 01 Sierpnia 2017, 14:31:40 wysłana przez Łakasabasz »

Offline kolejarz2009

  • Zasłużony dla Symulatora
  • Wiadomości: 91
    • Zobacz profil
  • Otrzymane polubienia: 71
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #3 dnia: 01 Sierpnia 2017, 14:52:57 »
Jeśli się dobrze orientuje, to SDL może pomóc przy dodaniu obsługi wielu O.S. do MaSzyny. Piszą że SDL obsługuje audio, grafike itp.
Sam nigdy się tym nie bawiłem

https://libsdl.org
« Ostatnia zmiana: 01 Sierpnia 2017, 14:56:18 wysłana przez kolejarz2009 »

Offline Milek7

  • Administrator
  • Wiadomości: 1047
    • Zobacz profil
  • Otrzymane polubienia: 900
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #4 dnia: 01 Sierpnia 2017, 16:14:27 »
o, nie zauważyłem wątku.
obecnie pod linuxa przystosowany jest mój branch z shaderami. do kilku dni myślę że zrobię merge z tmj tak żeby było kompatybilne z najnowszym patchem. dźwięk obecnie jest na directsound, na buildzie linuxowy zastąpiony atrapą. obecne plany są takie żeby do dźwięku użyć openal-soft i libsndfile do ładowania plików.
sam mam to w planach zrobić, ale nie w najbliższym czasie więc jak komuś się chce to może zrobić.

a co do samej kompilacji pod mingw to pewnie jest to możliwe do zrobienia nawet teraz z directsoundem. cmake powinien potrafić wygenerować makefile czy pliki projektu jakiegoś ide, trzeba tylko przekompilować zależności pod mingw. ale ja tym się nie będę zajmował bo mi to niepotrzebne.

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #5 dnia: 01 Sierpnia 2017, 19:27:01 »
@Milek7 cmake wywala mi błąd
CMake Error at G:/utilitis/cmake-3.9.0-rc5-win64-x64/share/cmake-3.9/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
 Could NOT find GLEW (missing: GLEW_LIBRARY)
Mam mu podać ścieżkę do \ref\glew\include czy co innego, bo zgupłem...

Offline Milek7

  • Administrator
  • Wiadomości: 1047
    • Zobacz profil
  • Otrzymane polubienia: 900
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #6 dnia: 01 Sierpnia 2017, 19:43:15 »
no ścieżkę do .lib (dla gcc to może .a) z GLEW. możesz dla przykładu zobaczyć do tych .batów dla visuala.
« Ostatnia zmiana: 01 Sierpnia 2017, 19:53:49 wysłana przez Milek7 »

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #7 dnia: 02 Sierpnia 2017, 15:03:30 »
Masakra

Według wzoru na szanse skompilowania programu (S = 10/K^3 gdzie S to szansa, K to ilość kodu) nie miało prawa mi się udać, mimo że pobrałem, zbudowałem i podłączyłem chyba z 5 różnych bibliotek. Wywala mi błąd przy kompilowaniu pliku projektu. Na cmake się nie znam, więc może mi ktoś wytłumaczyć co walło?.

Plik Makefile2
CMakeFiles/eu07++ng.dir/all:
$(MAKE) -f CMakeFiles\eu07++ng.dir\build.make CMakeFiles/eu07++ng.dir/depend
$(MAKE) -f CMakeFiles\eu07++ng.dir\build.make CMakeFiles/eu07++ng.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=G:\projekty\maszyna\CMakeFiles --progress-num= "Built target eu07++ng"
.PHONY : CMakeFiles/eu07++ng.dir/all
Błąd w 2. lini.

Oprócz tego w projekcie wygenerowanym przez cmake nie ma ani 1 pliku źródłowego...

Offline carmel4a

  • Zasłużony dla Symulatora
  • Wiadomości: 175
    • Zobacz profil
    • Moja stronka na Tumblrze z changelogiem ze STAREGO projektu.
  • Otrzymane polubienia: 36
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #8 dnia: 02 Sierpnia 2017, 16:48:14 »
Według mnie SFML tu nie zadziała, bo z tego co pamiętam nie jest modularny (trzeba by całego main loop'a przebudować). OpenAl?
Toruń robię.
Ma ktoś stare zdjęcia z Bydgoszczy Głównej?

Podczas tworzenia dodatków nie muszę uwzględniać (co nie oznacza, że nie mogę) uwag które nie dotyczą zagadnień w przyklejonych wątkach TD.

Offline Milek7

  • Administrator
  • Wiadomości: 1047
    • Zobacz profil
  • Otrzymane polubienia: 900
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #9 dnia: 02 Sierpnia 2017, 16:53:20 »
no ale to wstawiłeś kawałek wygenerowanego makefile, a jaki błąd? pokaż jeszcze argumenty do cmake i to co wypisał.

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #10 dnia: 02 Sierpnia 2017, 18:05:30 »
Błąd podczas kompilowania:
recipe for target 'CMakeFiles/eu07++ng.dir/all' failed
Warningi podczas generowania:
Found ZLIB: optimized;C:/Windows/zlib1.dll;debug;G:/utilitis/zlib-1.2.11/libzlib.dll (found version "1.2.11")
Configuring done
CMake Error at CMakeLists.txt:77 (add_executable):
  Cannot find source file:

    shader.cpp

  Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
  .hxx .in .txx


CMake Error: CMake can not determine linker language for target: eu07++ng
CMake Error: Cannot determine link language for target "eu07++ng".
Generating done

Plik Makefile2 i Log kompilacji w załącznikach

Offline Milek7

  • Administrator
  • Wiadomości: 1047
    • Zobacz profil
  • Otrzymane polubienia: 900
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #11 dnia: 02 Sierpnia 2017, 23:50:02 »
eh.. przecież pisze jak byk, że brakuje pliku shader.cpp
próbujesz tego cmake na moich źródłach czy innych? bo jak nie na moich to musisz usunąć te pliki których nie ma z CMakeLists. najlepiej zacznij od moich a później się baw z innymi.

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #12 dnia: 03 Sierpnia 2017, 14:31:01 »
Pobrałem twoje repo z git.eu07.pl i stworzyłem projekt, który nie działa...
Wywala błąd na #include <ddraw.h> i <dsound.h>
« Ostatnia zmiana: 03 Sierpnia 2017, 14:57:10 wysłana przez Łakasabasz »

Offline carmel4a

  • Zasłużony dla Symulatora
  • Wiadomości: 175
    • Zobacz profil
    • Moja stronka na Tumblrze z changelogiem ze STAREGO projektu.
  • Otrzymane polubienia: 36
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #13 dnia: 03 Sierpnia 2017, 15:01:02 »
Nie jestem aktywnym programistą cpp, ale coś siedziałem. CO oznacza:
Cytuj
Wywala błąd na #include <ddraw.h> i <dsound.h>
? Programowałeś coś w cpp? Bo coś mało informacji o błędach podajesz. Błąd linkera, nie chce się skompikować, brak plików?
Toruń robię.
Ma ktoś stare zdjęcia z Bydgoszczy Głównej?

Podczas tworzenia dodatków nie muszę uwzględniać (co nie oznacza, że nie mogę) uwag które nie dotyczą zagadnień w przyklejonych wątkach TD.

Offline Milek7

  • Administrator
  • Wiadomości: 1047
    • Zobacz profil
  • Otrzymane polubienia: 900
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #14 dnia: 03 Sierpnia 2017, 16:48:32 »
Pobrałem twoje repo z git.eu07.pl i stworzyłem projekt, który nie działa...
Wywala błąd na #include <ddraw.h> i <dsound.h>
tam chyba jest trochę stary kod, tu jest aktualny: https://github.com/Milek7/maszyna/tree/shadowdupa (wieczorem zrobię pusha i tam)

no a z tymi includami to musisz poszukać jak się używa directsounda w mingw, na pewno potrzeba ściągnąć toolkita sdk i dodać ścieżkę do nagłówków, a jak to zlinkować to nie wiem.
albo możesz skompilować bez dźwięku (zmień ifdefy w Sound.h, Sound.cpp i winheaders.h)

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #15 dnia: 05 Sierpnia 2017, 18:45:37 »
@carmel4a Co do SFML: nie, jest modułowy. Moduł systemowy - wątki i obsługa czasu, moduł graficzny - grafika 2d, moduł muzyczny - obsługa dźwięków, moduł internetowy - obsługa HTTP, FTP, UDP, TCP. Z powodzeniem wykorzystywałem moduł systemowy w aplikacjach konsolowych bez użycia grafiki, muzyki. Tak samo z modułem internetowym.
Co do błędów to gdy pojawia się error przy #include oznacza wyłącznie błąd kompilatora. Linker nawet się nie włączy. Powiem rzecz oczywistą dla osób, które kiedykolwiek cokolwiek coś zakodziły w c++, przy procesie kompilacji najpierw uruchamia się preprocesor, później następuje właściwa kompilacja kończona plikiem .o, a na koniec uruchamia się linker (plik .o na .exe). Tak więc #include to komenda preprocesora i błąd nie pozwala na dalszą kompilację.
« Ostatnia zmiana: 05 Sierpnia 2017, 18:47:57 wysłana przez Łakasabasz »

Offline Łakasabasz

  • Wiadomości: 25
    • Zobacz profil
  • Otrzymane polubienia: 6
Odp: Exe - uniezależnienie od Windowsa
« Odpowiedź #16 dnia: 05 Sierpnia 2017, 18:48:54 »
P.S Admin/(Moderator forum) nie mogłem edytować poprzedniego postu...

@Milek7 Nie trawię DirectX-a. Spróbuję więc wymienić go na SFML-a.
« Ostatnia zmiana: 05 Sierpnia 2017, 18:50:28 wysłana przez Łakasabasz »