- Symulator MaSzyna -
Symulator EU07 (i nie tylko) => Na warsztacie => Wątek zaczęty przez: Łakasabasz w 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.
-
Milek kompiluje już exeki na linuksie. Nieme, ale ponoć działają. DirectX jest używany tylko do dźwięku.
-
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ą).
-
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 (https://libsdl.org)
-
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.
-
@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...
-
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.
-
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...
-
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?
-
no ale to wstawiłeś kawałek wygenerowanego makefile, a jaki błąd? pokaż jeszcze argumenty do cmake i to co wypisał.
-
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
-
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.
-
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>
-
Nie jestem aktywnym programistą cpp, ale coś siedziałem. CO oznacza:
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?
-
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)
-
@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ę.
-
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.