Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
yaqwsx
Založen: 25. 02. 2008 Příspěvky: 66
|
Zaslal: 25. únor 2008, 17:24:03 Předmět: vector z STL a SDL |
|
|
Dělám svou 3. hru v SDL. Bohužel, se mi SDL nějak nekamarádí s vectorem ze standartní třídy šablon. Konkrétně mi linker vyhazuje:
kód: |
1>main.obj : error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: __thiscall std::_Vector_const_iterator<int,class std::allocator<int> >::_Vector_const_iterator<int,class std::allocator<int> >(int *,class std::_Container_base_secure const *)" (??0?$_Vector_const_iterator@HV?$allocator@H@std@@@std@@QAE@PAHPBV_Container_base_secure@1@@Z) |
a kód:
kód: |
#include <SDL.h>
#include <fstream>
#include <istream>
#include <SDL_image.h>
#include <vector>
#include <SDL_ttf.h>
#include "sprite.h"
;
//using namespace std;
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#pragma comment(lib, "SDL_image.lib")
#pragma comment(lib, "SDL_ttf.lib")
std::fstream chyba("chyba.txt");
SDL_Surface *okno;
SDL_Surface *ikona = NULL;
std::vector<int> t;
bool ProcessEvent()
{
SDL_Event event;
while(SDL_PollEvent(&event))
{
switch(event.type)
{
// Klavesnice
case SDL_KEYDOWN:
switch(event.key.keysym.sym)
{
case SDLK_ESCAPE:
return false;
break;
default:
break;
}
break;
// Pozadavek na ukonceni
case SDL_QUIT:
return false;
break;
default:
break;
}
}
return true;
}
int main(int argc, char *argv[])
{
//Inicializace
if(SDL_Init(SDL_INIT_EVERYTHING | SDL_INIT_NOPARACHUTE ) == -1)
{
chyba << "Nepodařila se inicializace" << SDL_GetError();
return false;
}
//inicializace textu
if(TTF_Init() == -1)
{
chyba << "Nepodařila se inicializace fontu" << TTF_GetError();
}
//Nasteveni okna
okno = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE);
//Nastaveni popisku
SDL_WM_SetCaption("ProjectEngin", NULL);
if(ikona != NULL)
SDL_WM_SetIcon(ikona, NULL);
sprite u;
{
sprite i;
i.load("flower.png");
u = i;
}
//Konec inicializace
t.push_back(5);
bool done = false;
while(!done)
{
done = !ProcessEvent();
u.Draw(20,20);
SDL_UpdateRect(okno,0,0,800,600);
SDL_Delay(100);
}
// Deinicializace a konec
SDL_Quit();
TTF_Quit();
return 0;
} |
Používam VS 2008. SLD mám překompilované(tu chybu mi to hází i u originálu). Už jsem hledal, ale všude radí přkompilovat - což jsem udělal.
PRosím o radu někoho zkušenějšího.
Děkuji za každou radu! |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 25. únor 2008, 18:07:20 Předmět: |
|
|
ak som odtial vysekol pravdepodobne tvoju hlavicku sprire a aj ten objekt tak to islo scompilovat aj spustit v Code::Blocks _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
yaqwsx
Založen: 25. 02. 2008 Příspěvky: 66
|
Zaslal: 25. únor 2008, 18:15:32 Předmět: |
|
|
JJ, to vím, že jiný kompilátory to zkompilují, ale já bych to rád zprovoznil pod VS.
Jinak zkusil jsem sprite a vše oddělat; nechal jsem jenom SDL; a problém stále je... |
|
Návrat nahoru |
|
 |
OndraSej

Založen: 28. 07. 2007 Příspěvky: 767 Bydliště: Brandýs nad Labem
|
|
Návrat nahoru |
|
 |
yaqwsx
Založen: 25. 02. 2008 Příspěvky: 66
|
Zaslal: 25. únor 2008, 19:32:36 Předmět: |
|
|
TAk jsem dle toho něco přenastavil, a podařilo se mi spustit Debug vezi avšak relase nikoliv. Bohužel ani tak mi to nefunguje - nedaří se mi to spustit - C runtime library mi vyhazuje chybu.
http://img122.imageshack.us/my.php?image=chybavi9.jpg
Progaram Dependency walker mi vypisuje: Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
Neznáte někdo StepByStep tutoriál na SDL ve VS? Popřípadně nějaké IDE, které má pár vychytávek jako VS? |
|
Návrat nahoru |
|
 |
nou

Založen: 28. 07. 2007 Příspěvky: 1051
|
Zaslal: 25. únor 2008, 19:44:51 Předmět: |
|
|
neviem ale pokial viem tak VS ma moznost pouzivat aj gcc kompilator. tak ako Code::Blocks podporuje asi 8 kompilatorov _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 25. únor 2008, 23:22:42 Předmět: |
|
|
Pro debug verzi nastav jako runtime knihovnu Multi-threaded Debug a pro release verzi Multi-threaded (v nastavení projektu - c++ - code generation) _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
yaqwsx
Založen: 25. 02. 2008 Příspěvky: 66
|
Zaslal: 26. únor 2008, 20:10:59 Předmět: |
|
|
To Eosie: JJ, tak to mám nastavené. V SDL, jsem už dělal, jenže jteď sem poprvé použil vector - a linker se mi nekamárádí s vectorem a SDL....
Jinak asi začnu kompilovat přes GCC..... |
|
Návrat nahoru |
|
 |
Weny Sky

Založen: 28. 07. 2007 Příspěvky: 241
|
Zaslal: 26. únor 2008, 20:34:04 Předmět: |
|
|
nastav si Multi-Thread Debug DLL ja to tak nastavuju a zadny problem s tim nemam |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 26. únor 2008, 21:09:50 Předmět: |
|
|
Když se tak dívám na ten error, napadá mě akorát, že ti tam chybí manifest.
weny> Multi-Threaded DLL pomáhá jen tehdy, pokud alokuješ data z jedné CRT knihovny (např. v aplikaci: pomocí libcmt.lib = multi-threaded (statická)) a pokoušíš se to uvolnit jinou CRT knihovnou (např. ve vlastním dll: pomocí msvcrX.dll = multi-threaded dll na VC++ verze X), protože každá z těch knihoven si může držet vlastní informace o heapu a není dobrý, když je mezi sebou mícháš. Ale i Multi-threaded DLL není samospasitelné - např. tvoje dll knihovna může být kompilována jinou verzí VC++ než aplikace (a hned používáš pokaždé jinou msvcrX.dll).
Jinak tohle rozhodně nemá nic společného s SDL a ani za to nemůže VC++, spíš tam má autor threadu něco blbě nastavené nebo používá špatné binárky k SDL (třeba binárky kompilované s GCC). Nejbezpečnější je všechno kompilovat stejným compilerem se stejnou verzí základních knihoven. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
yaqwsx
Založen: 25. 02. 2008 Příspěvky: 66
|
Zaslal: 27. únor 2008, 14:51:15 Předmět: |
|
|
Tak se omlouvám, že jsem vás obtěžoval.
Problém jsem vyřešil - založil jsem nový projekt...Knihovny jsem totiž překompilovával až poté, co jsem stávající projekt založil a přišel na chybu s vectorem....
Děkuji vám všem za ochotu pomoci |
|
Návrat nahoru |
|
 |
|