Kun yritän kääntää yhtä ohjelm Dev-C++:llä tulee aina tämmöinen virhe: 26 C:\Dev-Cpp\Makefile.win [Build Error] *** target pattern contains no `%'. Stop.
Ja kun käännän MSVC:llä en saa ohjelmaa toimimaan muissa koneissa.
E:lisään tähän kun jos vastaan niin viesti menee johki ihan outoon aiheeseen.
Tossa vielä toi Makefile.win
# Project: Project1 # Makefile created by Dev-C++ 4.9.9.2 CPP = g++.exe CC = gcc.exe WINDRES = windres.exe RES = OBJ = "D:/Ohjelmointi/ikkuna\ testi/ikkuna\ testi/main.o" $(RES) LINKOBJ = "D:/Ohjelmointi/ikkuna testi/ikkuna testi/main.o" $(RES) LIBS = -L"C:/Dev-Cpp/lib" -L"D:/Ohjelmointi/SDL/lib" -mwindows D:/Ohjelmointi/SDL/lib/SDL.lib D:/Ohjelmointi/SDL/lib/SDL_ttf.lib D:/Ohjelmointi/SDL/lib/SDLmain.lib INCS = -I"C:/Dev-Cpp/include" CXXINCS = -I"C:/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Dev-Cpp/include/c++/3.4.2" -I"C:/Dev-Cpp/include" -I"D:/Ohjelmointi/SDL/include" BIN = Project1.exe CXXFLAGS = $(CXXINCS) CFLAGS = $(INCS) RM = rm -f .PHONY: all all-before all-after clean clean-custom all: all-before Project1.exe all-after clean: clean-custom ${RM} $(OBJ) $(BIN) $(BIN): $(OBJ) <-----rivi josta valittaa!!!!!!!!!!!!!! $(CPP) $(LINKOBJ) -o "Project1.exe" $(LIBS) "D:/Ohjelmointi/ikkuna\ testi/ikkuna\ testi/main.o": D:/Ohjelmointi/ikkuna\ testi/ikkuna\ testi/main.cpp $(CPP) -c "D:/Ohjelmointi/ikkuna testi/ikkuna testi/main.cpp" -o "D:/Ohjelmointi/ikkuna testi/ikkuna testi/main.o" $(CXXFLAGS)
Koodi?
Tämä aihe näyttää nyt bugaavan: http://koti.mbnet.fi/legutus/Ohjelmointiputka.
EDIT: Leiskakin on hajalla, venynyt tuonne oikealle :/
Olisi kiva jos joku tietäisi ratkaisun kun minulla on yksi toinen ongelma, mutta haluasin saada siitä toimivan esimerkin ennen kun rupean kyselemään. Ja oisi muutenkin mukaava että saisi jaettua omia tuotoksia.
Kokeileppa kääntää käsin. Sitten kun sillä saat käännettyä sen, rukkaa Makefilea.
EDIT: Eipäskun hetkinen, piilisikö syy escapechareissa?
EDIT2: Kokeile poistaa nuo välilyöntejä edeltävät \-merkit.
Eipä auttanut tuo \-merkkien poisto.
Nyt se valittaa
26 C:\Dev-Cpp\Makefile.win [Build Error] *** multiple target patterns. Stop.
#include "D:\Ohjelmointi\Peli\ikkuna.h"
miksi absoluuttinen pathi?
ja vaihda noi includet näin, josko auttais...
#include <SDL/SDL.h> //hakemistot erotellaan mieluummin / merkillä kuin \ merkillä #include "ikkuna.h" //eli siis tähän ei pitäis laittaa absoluuttista pathia...
myös visual C++ kanssa kannattaa erotella hakemistot mieluummin kautta- kuin kenoviivalla.
Tuo on sen takia että main.cpp on kansiossa D:\Ohjelmointi\ikkuna testi\ikkuna testi\main.cpp
Mut kopsasin tuon ikkuna.h:n samaan kansioon nyt ja muutin nuo includet. Eikä auttanut.
Kokeile kääntää käsin. Siis ensin avaat command linen, sitten meet kansioon jossa mingw on, (jos se ei ole path-environment variablessasi) ja käännät ohjelmasi. Eli siis jotain seuraavan suuntaista:
g++.exe -o Project1.exe "D:/Ohjelmointi/ikkuna testi/ikkuna testi/main.cpp" -lSDL -lSDL_ttf -lSDLmain
Pienen taistelun jälkeen sain sen löytämään kaikki tiedostot.
Tulee tollasia:
http://img80.imageshack.us/img80/7659/
Äh, kirjoita kuten PC-Master sanoi. Tuossa olet soveltanut aivan omiasi.
Näköjään jäi tuo project1.exe epähuomiossa pois.
Nyt tulee noin:
http://img48.imageshack.us/img48/4999/
Sulla on g++.exe -o project1.exe "D:/ohjelmointi/ikkuna testi/ikkuna testi/main.cpp" -lsdl -lsdl_ttf -lsdlmain
. Sä voisit kirjoittaa sen ilman tuota .exe-päätettä g++:ssä. Tykkään itse käyttää tätä rakennetta: g++ -s -o2 -o ulos.exe sisaan.cpp -liput
, mutta itse ongelmaan:
Virheilmoitusten mukaan sulla on jotain häikkää itse ikkuna.h:ssa. Mitä tämä edes sisältää?
Työn alla oleva ikkuna sydeemi.
Homma kääntyy MSVC:llä ongelmitta, mutta ei sitten toimi muissa koneissa.
(Mod. Edit. TGunner on väärässä, joten 560 riviä turhaa koodia poistettu.)
Mainittu ikkuna.h ei aiheuta kuin varoituksia. Virheet ovat linkkerivirheitä ja johtuvat nähdäkseni siitä, että yrität linkittää ties mitä SDL:n MSVC-versiota MinGW:n linkkerillä. Teepä ihan tavallinen pieni SDL-ohjelma ja kokeile kääntää ja linkittää se, niin selviää, onko näin. Kuitenkin nuo virheessä esiintyvät tiedostonimet (*.lib) viittaavat jonnekin muualle kuin GNU-linkkeriin, jonka kirjastot on yleensä nimetty muodossa lib*.a.
Mieleeni tulisi myös sellainen, että usein noissa taitaa olla linkitettävänä myös -lmingw32
. Kokeile ehkä aivan ensiksi tätä.
#include <SDL/SDl.h> int main(int argc, char **argv) { SDL_Init(SDL_INIT_VIDEO); SDL_Surface * nn; nn=SDL_SetVideoMode(1024, 768, 32, SDL_DOUBLEBUF|SDL_HWSURFACE); SDL_Delay(2000); SDL_FreeSurface(nn); SDL_Quit(); return 0; }
Tuon yrittää kääntää Dev-C++:lla tulee
.drectve `/DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"uuid.lib" /DEFAULTLIB:"MSVCRT" /DEFAULTLIB:"OLDNAMES" ' unrecognized [Linker error] undefined reference to `_alloca_probe' [Linker error] undefined reference to `_alloca_probe' [Linker error] undefined reference to `_alloca_probe' ld returned 1 exit status C:\Dev-Cpp\Makefile.win [Build Error] [sdl1.exe] Error 1
ja kun käsin yrittää tulee vain
undefined refence to 'WinMain@16'
tuolla -lmingw32 ei ollu vaikutusta asiaan. Että on yhden ohjelman kääntäminen niin että saa sen muillakin koneilla toimimaan vaikeeta. Ennen joulua kun sain oman koneen ei ollu mitään ongelmia.
No jopas. Tosiaan nyt veikkaisin tuon peruteella yhä, että vääriä kirjastoja on liikkeellä. Melkeinpä suosittelisin Dev-C++:n asennusta puhtaalta pöydältä ja SDL:n ja kumppaneiden lataamista Dev-C++:n omalla päivitystoiminnolla.
Siivosin ja Asensin sen uusiks. Ja SDL:n ja SDL_ttf:n Dev-C++:n omalla päivitystoiminnolla.
Edelleen Dev-C++ valittaa
26 C:\Dev-Cpp\Makefile.win [Build Error] *** target pattern contains no `%'. Stop.
Se ei edes mene etene itse koodiin. Valittaa samaa vaikka yrittäis kääntää tyhjää koodia.
ja käsin tulee toi
undefined refence to 'WinMain@16'
Tuli mieleen sellainenkin, että ei kai ympäristömuuttuja PATH sisällä MSVC:n ohjelmapolkuja niin, että tuo vahingossa käyttäisi väärää ohjelmaa automaattisesti kääntäessä?
WinMain@16 toisi ensiksi mieleen, että SDLmain-linkitys puuttuu... Muistelisin myös, että nuo ovat jostain syystä Windowsissa niin kieroja, että järjestyskin vaikuttaa.
-lmingw32 -lSDLmain -lSDL
Kappas vain. Nyt onnistu ja käännetty ohjelma toimi ainakin olkkarin koneessa.
Kiitän kaikkia avusta!
Aihe on jo aika vanha, joten et voi enää vastata siihen.