Witam, skonczylem juz ten moj program ponga, teraz mam problem jak go skompilowac na windowsa, chcialbym zeby dzialal w cmd windowsa 64bitowego, tylko ze program uzywa bibliotek gnu/linuxowych, tzn wlasciwie to tylko dwoch - unistd.h <- ona nie jest problemem, zamienie po prostu funkcje sleep() na Sleep() juz tak wczesniej robilem, ale problemem jest ncurses, pytalem juz ludzi i mowia zebym sciagnal windowsowa wersje ncurses, tak tez zrobilem -> http://www.projectpluto.com/win32a.htm ; jest to fork oficjalnego pdcurses, pobralem skonfigurowalem i skompilowalem, no i mam ta biblioteke, do kompilacji na windowsa uzywam programu mingw, ale ta biblioteka co pobralem jakos slabo udokumentowana jest, nie moge tam znalezc informacji "i co teraz", no mam ta biblioteke, mam mingw, co mam teraz zrobic zebym mogl skopilowac ten program na windowsa ?
Wystarczy dodać odpowiednie includy, skompilować i zlinkować. Jaki to problem? Jeżeli masz pliki biblioteki to po prostu dodajesz je do linkera (-L / -l) o raz dodajesz ścieżkę includów (-I)
Mhm, poczytam jeszcze o opcjach mingwa i zlinkuje te biblioteki statycznie i dam znac jak mi poszlo, ale mam jeszcze pytanie, bo na windowsie biblioteki maja chyba rozszerzenie dll tak ? Bo po kompilacji tej biblioteki nie mam w srodku zadnych plikow *dll, mam tylko jeden *so libXCurses.so, a rozszerzenia *so na gnu/linuxie sa uzywane, czyli na czym polega ten bajer ze ta biblioteka jest na windowsa ? nie rozumiem
Ale tu ci żadne linkowanie nie pomoże, bo na windowsa nie ma ncurses. Jest natomiast pdcurses
nie próbowałem, ale jest.
http://gnuwin32.sourceforge.net/packages/pdcurses.htm
Przed pisaniem softu który w założeniu miał być cross-platformowy, warto spojrzeć czy biblioteka obsługuje dane platformy ; ) Bo zmiana rozszerzenia z so na dll nie pomoże.
// edit
jak chcesz wiedzieć czym jest *.so to masz: http://www.skyfree.org/linux/references/ELF_Format.pdf. Rozdział pierwszy i drugi.
Bo po kompilacji tej biblioteki nie mam w srodku zadnych plikow *dll, mam tylko jeden *so libXCurses.so, a rozszerzenia *so na gnu/linuxie sa uzywane,
Jeśli to jest biblioteka dynamiczna, to powinna mieć rozszerzenie .dll
, chociaż dla Windowsa to nie ma tak naprawdę znaczenia - można załadować bibliotekę dynamiczną o dowolnym rozszerzeniu. Ważna jest zawartość.
Biblioteki statyczne mają rozszerzenie zależne od kompilatora. W świecie windowsowym „panuje” rozszerzenie .lib
, ale mingw jako imitujący uniksa, używa .a
Takie samo rozszerzenie (.lib/.a) mają biblioteki importowe, które są tylko informacją dla linkera, że kod funkcji będzie w bibliotece dll (samej dll-ki nie podaje się linkerowi, będzie potrzebna dopiero do uruchomienia programu)
Nie wiem co z tym zrobic jednak ;c
Mam ten folder caly
root dir
--------------
HISTORY PDCurses.spec config.h config.sub curspriv.h exp-base.def makedist.mif term.h win32a
IMPLEMNT README config.h.in configure demos exp-wide.def panel.h version.mif win32a.zip
Makefile aclocal.m4 config.log configure.ac doc install-sh pdcurses watcom.mif x11
Makefile.in config.guess config.status curses.h dos libobjs.mif sdl1 win32
folder - x11
--------------------
Makefile beep.sho deprec.o inopts.sho move.sho pdcdisp.c pdcutil.sho scanw.sho tuidemo.o
Makefile.aix.in big_icon.xbm deprec.sho insch.o ncurses_cfg.h pdcdisp.o pdcx11.c scr_dump.o util.o
README bkgd.o firework insch.sho newdemo pdcdisp.sho pdcx11.h scr_dump.sho util.sho
ScrollBox.c bkgd.sho firework.o insstr.o newdemo.o pdcgetsc.c pdcx11.o scroll.o window.o
ScrollBox.h border.o getch.o insstr.sho newtest pdcgetsc.o pdcx11.sho scroll.sho window.sho
ScrollBox.o border.sho getch.sho instr.o newtest.o pdcgetsc.sho printw.o slk.o worm
ScrollBox.sho clear.o getstr.o instr.sho outopts.o pdckbd.c printw.sho slk.sho worm.o
ScrollBoxP.h clear.sho getstr.sho kernel.o outopts.sho pdckbd.o ptest termattr.o x11.c
addch.o color.o getyx.o kernel.sho overlay.o pdckbd.sho ptest.o termattr.sho x11.o
addch.sho color.sho getyx.sho keyname.o overlay.sho pdcscrn.c rain terminfo.o x11.sho
addchstr.o compose.h inch.o keyname.sho pad.o pdcscrn.o rain.o terminfo.sho xcurses-config.in
addchstr.sho debug.o inch.sho libXCurses.a pad.sho pdcscrn.sho refresh.o testcurs xmas
addstr.o debug.sho inchstr.o libXCurses.so panel.o pdcsetsc.c refresh.sho testcurs.o xmas.o
addstr.sho delch.o inchstr.sho little_icon.xbm panel.sho pdcsetsc.o sb.c touch.o
attr.o delch.sho initscr.o mouse.o pdcclip.c pdcsetsc.sho sb.o touch.sho
attr.sho deleteln.o initscr.sho mouse.sho pdcclip.o pdcutil.c sb.sho tui.o
beep.o deleteln.sho inopts.o move.o pdcclip.sho pdcutil.o scanw.o tuidemo
No i co teraz ? Jak mam to zlinkowac, ktore pliki ? i jakie include dodac ? nie wiem co mam z tym zrobic ....
probuje
x86_64-w64-mingw32-gcc -L ~/Pobrane/pdcurses/ pong.c
ale to nic nie daje, co wpisuje zle ?
Moja rada. Odpuść sobie cross-kompilacje jak masz spore problemy z normalnym kompilowaniem pod linuxa. A ten program skompiluj sobie na Windowsie.
Nie mam windowsa i nie mam zamiaru uzywac, a problemu z kompilacja na gnu/linuxa nie mam, jednak prosil bym o porade jak ktos wie co robie zle i jak dolaczyc te biblioteki prawidlowo