Yra toks tekstinis (!) žaidimas pavadinimu Rogue. Pasinorėjau pažaisti, pajusti tikrą 2D grafiką (smegenyse), todėl paieškojau guglėje. Radau, bet nepatiko valdymo mygtukai. Todėl nutariau persidaryti į savo variantą, tuo labiau, kad source kodas yra. Kompiliuojant pasipylė srautas “warningų”, o aš mėgstu, kai kompiliuojasi visiškai be nieko… Teko pavargti kelias dienas- senovės programišiai labai mėgo “nutylėjimus” ir ignoravo viską iš eilės. Dabar rezultatas sumažėjo iki vieno įspėjimo:
> "make.exe" all
cc -g -c -DUNIX -DUNIX_SYS5 -Iinc -MMD -MP -MF"build/levo.d" src/levo.c -o build/levo.o
cc -g build/monster.o build/ring.o build/rogue.o build/levo.o build/random.o build/machdep.o build/object.o build/zap.o build/play.o build/main.o build/inventory.o build/save.o build/pack.o build/room.o build/level.o build/instruct.o build/init.o build/hit.o build/move.o build/score.o build/trap.o build/throw.o build/use.o build/message.o build/spec_hit.o build/lcurses.o -lcurses -Wl,-Map=build/../rogue.exe.map,--cref -Wl,--gc-sections -o build/../rogue.exe
/usr/lib/gcc/i686-pc-msys/6.4.0/../../../../i686-pc-msys/bin/ld: symbol `stdscr' missing from main hash table
size build/../rogue.exe
text data bss dec hex filename
114789 22240 5405 142434 22c62 build/../rogue.exe> Process Exit Code: 0
> Time Taken: 00:01
Mano indelis- kogero visi “h” failai ir “makefile”. Sekantis etapas- šis smurtinis žaidimas turi suktis ant mikrokontrolerio.
Rogue source code C ir sukompiliuotas EXE failas. Veikia ant Windows 10.
Kaip susikompiliavo? Tikrai nežinau. Mano kompe pilna visokių C kompiliatorių ir kažkuris pasirodo kompiliuoja ir windowsinius exe failus.
Noob reikalas – neveikia *.exe. Keikiasi, kad neranda reikiamų DLL.
Jo. Darbe pabandžiau- neveikia. Suknisti windows su savo privalomais installeriais.
Rogue.exe static variantas. Deja, fazendoje neturiu kito kompo išbandymui.
pabandžiau aš reikiamus dll`us po vieną parsipūsti, sumečiau į system32 dirą. Nebeprašė, bet vistiek nepasileido.
O statinis variantas pasileidžia?
Nu čia windows, paprastas copy-paste nepadės. Pirmiausia- jei windows 64 bitų, tai į system32 dedasi 64 bitų dll 🙂 Ir panašiai. Ir dar kiekvienas dll turi būti įtrauktas į registrą su “regserv32” ar kuom tai kitu…
Dėl ko myliu windows:
Well, you don’t specify if it’s a 32 or 64 bit dll and you don’t include the error message, but I’ll guess that it’s the same issue as described in this KB article: Error Message When You Run Regsvr32.exe on 64-Bit Windows
Quote from that article:
This behavior occurs because the Regsvr32.exe file in the System32 folder is a 64-bit version. When you run Regsvr32 to register a DLL, you are using the 64-bit version by default.
Solution from that article:
To resolve this issue, run Regsvr32.exe from the %SystemRoot%\Syswow64 folder. For example, type the following commands to register the DLL: cd \windows\syswow64 regsvr32 c:\filename.dll
O syswow64 tupi 32bitų variantai… LOL.
Dll į system32 deti nereikia, užtenka kad jie būtų prie exe failo, o regsvr32 visai kitiems reikalams buvo 🙂 yra utėlė https://www.dependencywalker.com/ puikiai parodo failo priklausomybę nuo dll
tada nežinau. 🙂
Statinis vistiek naudoja vieną DLLą. Neturiu tiek žinių, kad ir šitą sukišti į exe.
Jo windowsinis cygwin turi savo biblioteku kurie reikalingi po kompilavimo, tai čia labiau kompiliatoriaus bajeriai, ne windows 🙂