Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » SDL Projekt: Fehler bei Release-Compilierung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.10.2006, 19:57 Uhr
~doni
Gast


Hi,

hab mir ein minispiel mit der SDL geschrieben, wenn cih das projekt als "Release" kompiliere, kriege ich die folgenden Fehler


C++:
Ball.obj : error LNK2001: unresolved external symbol @__security_check_cookie@4
Ball.obj : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)
Ball.obj : error LNK2001: unresolved external symbol "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)
Framework.obj : error LNK2001: unresolved external symbol __imp__exit
LINK : error LNK2001: unresolved external symbol _mainCRTStartup



Allerdings nur bei Releasecompilierung, im DEbugmodus klappt alles bestens.

woran kann das liegen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
10.10.2006, 12:44 Uhr
~doni
Gast



Zitat von ~doni:
Hi,

hab mir ein minispiel mit der SDL geschrieben, wenn cih das projekt als "Release" kompiliere, kriege ich die folgenden Fehler


C++:
Ball.obj : error LNK2001: unresolved external symbol @__security_check_cookie@4
Ball.obj : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" (??3@YAXPAX@Z)
Ball.obj : error LNK2001: unresolved external symbol "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z)
Framework.obj : error LNK2001: unresolved external symbol __imp__exit
LINK : error LNK2001: unresolved external symbol _mainCRTStartup



Allerdings nur bei Releasecompilierung, im DEbugmodus klappt alles bestens.

woran kann das liegen?


keiner einen tipp woran es liegen kann, dass etwas unter DEBUG problemlos kompilierbar it, aber unter RELEASE solche Fehler produziert?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
10.10.2006, 12:47 Uhr
mischa
Fragender


mit welcherm compiler/IDE machst du denn das unbd zeig doch wenigstens etwas code
--
Latein Unterricht ist die spätere Rache der Römer an den Germanen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
10.10.2006, 21:14 Uhr
~doni
Gast


Also, hier mal die zwei klassen, in der scheinbar der fehler auftritt:

Aber wie gesagt, nur bei "Release" compilierung. deswegen verstehe ich nicht ganz was am code falsch sein soll. scheint mir eher ein fehler in der einrichtung der releaseeinstellungen zu sein?

als ide nutze ich visual studio 2005

ball.h

C++:
#pragma once
#include "stdafx.h"
#include "Framework.h"
#include "Sprite.h"

class CBall
{
public:
    CBall(CFramework* g_pFramework, char* spritePath);
    ~CBall(void);
    CSprite* GetBallSprite() {return m_imageBall;}
private:
    CSprite*    m_imageBall;
};



ball.cpp

C++:
#include "Ball.h"

CBall::CBall(CFramework* g_pFramework, char* spritePath)
{
    this->m_imageBall = new CSprite(spritePath, g_pFramework);
}

CBall::~CBall(void)
{
}




Framework.h

C++:
#pragma once
#include "stdafx.h"
#include "Timer.h"

class CFramework
{
public:
    CFramework(int width, int height);
    ~CFramework(void);
    SDL_Surface* GetScreen() {return m_pScreen;}
    CTimer * GetTimer() {return m_pTimer;}
    void ClearScreen();
    void Flip();

private:
    SDL_Surface *m_pScreen;
    CTimer        *m_pTimer;
};




Framework.cpp

C++:
#include "Framework.h"

CFramework::CFramework(int width, int height)
{
    if(SDL_Init(SDL_INIT_VIDEO) == -1)
    {
        std::cerr<<"Fehler! bei Initialiseren";
        exit(1);
    }

    this->m_pScreen = SDL_SetVideoMode(width, height, 16,
                                        SDL_HWSURFACE| SDL_RESIZABLE | SDL_DOUBLEBUF);

    this->m_pTimer  = new CTimer();

    SDL_EnableKeyRepeat(100, SDL_DEFAULT_REPEAT_INTERVAL);
}

CFramework::~CFramework(void)
{
    SDL_FreeSurface(this->m_pScreen);
    SDL_Quit();
    std::cout<<"CFramework::Destruktor()"<<std::endl;
}

void CFramework::ClearScreen()
{
    SDL_FillRect(this->m_pScreen, NULL, SDL_MapRGB(this->m_pScreen->format, 0, 0, 0));
}

void CFramework::Flip()
{
    SDL_Flip(m_pScreen);
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.10.2006, 20:27 Uhr
~Herb
Gast


Also ich nehme mal an, du nutzt die SDL über eine Dll bzw. über eine Lib. Wenn Du die Lib in den Projekteinstellungen für Debug angegeben hast übersetzt es auch. Allerdings musst du sie in den Einstellungen für Realease auch angeben. Projekteinstellungen beziehen sich immer nur auf die aktuell ausgewählte Konfiguration (Debug, Release, was auch immer), d.h. eine Änderung (z.B. hinzufügen einer Lib, aber auch andere Optionen) muss immer in allen Konfigurationen gemacht werden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: