Juu pitkän pähkäilyn jälkeen taisin lähes saada tuon toimimaan pienimuotoisella ongelmalla vielä:
1>Linking...
1>pdcurses.lib(d000134.o) : warning LNK4078: multiple '.text' sections found with different attributes (E0000020)
1>World Leaders 2.obj : error LNK2001: unresolved external symbol _stdscr
1>C:\Documents and Settings\Mika.KOTI-8FEC3C6EF1\Omat tiedostot\Visual Studio 2008\Projects\World Leaders 2\Debug\World Leaders 2.exe : fatal error LNK1120: 1 unresolved externals
Ilmeisesti et ole ladannut MSVC-versiota vaan jollekin muulle kääntäjälle (kuten GCC:lle) tarkoitetun version. (MSVC = Microsoft Visual C/C++)
Latasin väärän laisen tiedoston tai jotain muuta, mutta tuon minkä latasin tuli mukana vain:
MSVC_Plugin.dll
Laitoin sen projekti kansiooni ja menin valikossa:
Project --> World Leaders 2 properties --> confuguration properties --> input
Sinne laitoin Additional Dependencies kohtana MSVC_Plugin.dll
Ja tulee erroria:
1>Linking...
1>MSVC_Plugin.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2E0
Luulisin, että tarvitset .lib ( eikä .dll ) tiedoston.
No en tiedä kirjoitin googleen, että download MSVC ja otin ensimmäisen ja tuo tiedosto tuli sieltä pelkästään. Mistäs sitten lataan sen, kun google antaa vääriä? :O
Enpä itsekkään tuolle löytänyt valmista käännettyä versiota...
Voithan kai yrittää kääntää ohjelman itse. Lähdekoodipaketista löytyy ohjeet...
http://www.filewatcher.com/p/PDCurses-3.2.tar.gz.309232/PDCurses-3.2/INSTALL.html
Varmaan nämä ohjeet löytyvät juuri lähdekoodipaketista. Seuraat vain Windowsille (Visual C++) suunnattuja ohjeita. Jos ei onnistu googletat vain lisäohjeita
No kun ei onnistu. Tein mielestäni niinkuin ohjeessa sanottiin, mutta edelleen heittää erroria.
1>Linking...
1>pdcurses.lib(d000134.o) : warning LNK4078: multiple '.text' sections found with different attributes (E0000020)
1>World Leaders 2.obj : error LNK2001: unresolved external symbol _stdscr
1>C:\Documents and Settings\Mika.KOTI-8FEC3C6EF1\Omat tiedostot\Visual Studio 2008\Projects\World Leaders 2\Debug\World Leaders 2.exe : fatal error LNK1120: 1 unresolved externals
Jos sanotaan, että voisit kääntää PDCursesin, tämä todella tarkoittaa, että laitat oman projektisi aivan kokonaan pois, lataat PDCursesin lähdekoodit ja käännät niistä tarvittavat lib- ja dll-tiedostot. Tätä varten sinun pitäisi opetella käyttämään kunnolla MSVC:n käännöstoimintoja.
Voi olla, että koko asia on sinulle aivan liian vaikea. Kannattaa ehkä harkita jotain yksinkertaisempaa kieltä kuin C++, niin ei tarvitse kirjastojen kanssa nähdä vaivaa.
mutta kirjastot ei tarvitse kuin kerran onnistuneesti asentaa niin ne on aina. :)
Ja juu tuo vaikuttaa aika vaikealta, kun en tajua miten voin tehdä projektiani jos laitan sen kokonaan pois? Teenkö pelini .lib tiedostoon vai mitäs pirua? :O
NO idea olikin siinä, että ekaksi teet sen kirjaston, joka linkitetään siihen peliin... eli käännät ne sorsat ihan omassa projektissaan.
Ei kirjasto ole mikään maaginen taivaasta putoava palikka, vaan joku senkin on tehnyt ja kääntänyt ja linkittänyt lib- ja dll-tiedostoiksi. Tällä kertaa sinulle sopiva käännös puuttuu, joten joudut itse kääntämään sen. (Eri kääntäjien lib-tiedostot ovat erilaisia. Olet yrittänyt asentaa GCC:lle tarkoitettua lib-tiedostoa MSVC:hen, eikä se tietenkään toimi.)
Yksi ratkaisu olisi vaihtaa Visual studio vaikka Code::Blocksiin, jota itsekkin käytän ohjelmoinnissa. Tosin, sitten pitää taas opetella yksi IDE lisää...
okei. Yksi asia minua ihmetyttää. Mitä väliä on kirjastoiden avaamisen järjestyksellä?
Eli onko kirjastoni vain väärässä järjestyksessä ja siinä syy miksi tuo SDL_gfx ei toimi. Ja jos on niin mikäköhän se oikea järjestys on?
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <SDL_rotozoom.h> #include <SDL.h> #include <io.h> #include "windows.h" #include "SDL_ttf.h" #pragma comment(lib, "SDL_ttf.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDL_gfx.lib")
Errorit:
1>Linking...
1>The Gangster.obj : error LNK2019: unresolved external symbol "void __cdecl NaytaKuva(struct SDL_Surface *,struct SDL_Surface *,int,int)" (?NaytaKuva@@YAXPAUSDL_Surface@@0HH@Z) referenced in function _main
1>C:\Documents and Settings\Mika.KOTI-8FEC3C6EF1\Omat tiedostot\Visual Studio 2008\Projects\The Gangster\Debug\The Gangster.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Documents and Settings\Mika.KOTI-8FEC3C6EF1\Omat tiedostot\Visual Studio 2008\Projects\The Gangster\The Gangster\Debug\BuildLog.htm"
Ja kun laittaa tähän järjestykseen:
#include "stdafx.h" #include <iostream> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <io.h> #include "windows.h" #include "SDL_ttf.h" #include <SDL_rotozoom.h> #include <SDL.h> #pragma comment(lib, "SDL_ttf.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDL_gfx.lib")
1>The_gangster.cpp
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(77) : error C2065: 'SDL_SRCCOLORKEY' : undeclared identifier
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(169) : error C3861: 'SDL_WM_SetCaption': identifier not found
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(175) : error C2065: 'SDL_HWSURFACE' : undeclared identifier
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(175) : error C2065: 'SDL_FULLSCREEN' : undeclared identifier
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(175) : error C2065: 'SDL_DOUBLEBUF' : undeclared identifier
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(175) : error C3861: 'SDL_SetVideoMode': identifier not found
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(213) : error C3861: 'SDL_GetKeyState': identifier not found
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(224) : error C2660: 'SDL_GetMouseState' : function does not take 2 arguments
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(225) : error C2660: 'SDL_GetMouseState' : function does not take 2 arguments
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(237) : error C3861: 'SDL_Flip': identifier not found
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(276) : error C3861: 'SDL_Flip': identifier not found
Villi veikkaus: pistä SDL.h ja sen kirjasto(t) ekaks.
Tyyliin
#include <SDL.h> ... blabla muut headerit ... #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") .. blabla muut kirjastot ...
No pistin siihen järjestykseen, mutta samat 11 erroria ja sitten laitoin hieman eri:
#include "stdafx.h" #include <SDL.h> #include "SDL_ttf.h" #include <SDL_rotozoom.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include <io.h> #include "windows.h" #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL_ttf.lib") #pragma comment(lib, "SDL_gfx.lib")
Nyt tulee vain kolme erroria ja kaikki viittaavat normaali SDL "puuttumiseen" ilmeisesti.
1>The Gangster.cpp
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(213) : error C3861: 'SDL_GetKeyState': identifier not found
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(224) : error C2660: 'SDL_GetMouseState' : function does not take 2 arguments
1>c:\documents and settings\mika.koti-8fec3c6ef1\omat tiedostot\visual studio 2008\projects\the gangster\the gangster\the gangster.cpp(225) : error C2660: 'SDL_GetMouseState' : function does not take 2 arguments
Joo o, elikkä hokasin jo mistä vika johtui ja olin linkittänyt tiedostot ns. Ristiin, mutta korjasin asian. Sen jälkeen debuggasin pelin ja se valitti .dll kirjastoiden puuttumisesta no yksitellen latasin kaikki ja nyt tulee erillainen errori:
"Proseduuri aloituskohtaa ?assert1@@YAHHPAD@Z ei löydy dynaamisesti likitettävästä kirjastosta maxuutil.dll."
Minulla on tuo kirjasto, mutta onko se sitten viallinen? Mistä saisi kaikki SDL_gfx alkuperäiset kirjastot, kun niitä ei näyttänyt itse gfx paketissa tulevan.
Aihe on jo aika vanha, joten et voi enää vastata siihen.