Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: PDCurses ja MSVC

Sivun loppuun

mika132 [20.10.2009 21:19:35]

#

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

Metabolix [20.10.2009 21:26:57]

#

Ilmeisesti et ole ladannut MSVC-versiota vaan jollekin muulle kääntäjälle (kuten GCC:lle) tarkoitetun version. (MSVC = Microsoft Visual C/C++)

mika132 [20.10.2009 21:37:00]

#

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

aaämdee [20.10.2009 22:26:59]

#

Luulisin, että tarvitset .lib ( eikä .dll ) tiedoston.

mika132 [20.10.2009 22:47:25]

#

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

aaämdee [20.10.2009 23:05:51]

#

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

mika132 [21.10.2009 19:21:48]

#

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

Metabolix [22.10.2009 19:03:48]

#

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.

mika132 [22.10.2009 19:14:36]

#

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

vehkis91 [22.10.2009 19:19:54]

#

NO idea olikin siinä, että ekaksi teet sen kirjaston, joka linkitetään siihen peliin... eli käännät ne sorsat ihan omassa projektissaan.

Metabolix [22.10.2009 19:28:43]

#

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.)

vehkis91 [22.10.2009 19:30:27]

#

Yksi ratkaisu olisi vaihtaa Visual studio vaikka Code::Blocksiin, jota itsekkin käytän ohjelmoinnissa. Tosin, sitten pitää taas opetella yksi IDE lisää...

mika132 [24.10.2009 02:29:06]

#

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

temu92 [24.10.2009 04:07:13]

#

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 ...

mika132 [24.10.2009 13:04:22]

#

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

mika132 [25.10.2009 22:05:38]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta