JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Linker Fehler

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
phlip
Mini JLI'ler



Anmeldedatum: 27.08.2005
Beiträge: 39

Medaillen: Keine

BeitragVerfasst am: 07.11.2005, 16:28    Titel: Linker Fehler Antworten mit Zitat

Hi.
Ich hab andauernt die Fehlermeldung
Code:
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/Test.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.


Ich muss dann immer den Debug Ordner löschen, dann kann ich einmal compilieren.

Achja:Ich benutz VC6. Nein, ich hab kein falsches Projekt ausgewählt.

Wäre sehr dankbar für Hilfe.Das nervt nämlich wie Sau.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 41
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.11.2005, 16:39    Titel: Antworten mit Zitat

Wie immer mehr Infos über dein Projekt, was für Typ, etc.

Ansonsten wird es mit der Hilfe nur schwer.
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
phlip
Mini JLI'ler



Anmeldedatum: 27.08.2005
Beiträge: 39

Medaillen: Keine

BeitragVerfasst am: 07.11.2005, 16:51    Titel: Antworten mit Zitat

Oh, ich hatte eigentlich was reinkopiert. Hatte ich zu mindest gedacht. Rolling Eyes

Also ich hab eine Win32 Application. Dadrin wird D3D verwendet.
Ansonsten wüste ich nicht was ich noch posten soll.

Was auch komisch ist:Seitdem ich grad hier gepostet hab geht alles wunderbar.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 07.11.2005, 17:05    Titel: Antworten mit Zitat

Wenn du dein Projekt einmal Compilieren kannst und danach nicht mehr, ist es sehr wahscheinlich, dass die Exe-Datei noch ausgeführt wird, wenn du erneut kompilieren willst. So existiert nämlich ein Schreibschutz auf dieser und der Linker könnte zwar, darf aber nicht Wink
Lass dein Programm doch mal im Debugger schrittweise ablaufen und überprüfe, ob du dein Programm auch wirklich beendest (und nicht nur das Hauptfenster geschlossen wird)
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
smile_virus
Junior JLI'ler


Alter: 34
Anmeldedatum: 19.08.2004
Beiträge: 64

Medaillen: Keine

BeitragVerfasst am: 07.11.2005, 19:50    Titel: Antworten mit Zitat

Forensuche bringts
(;
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 07.11.2005, 20:04    Titel: Antworten mit Zitat

Einer von ca. 1 Mio Threads, alleine in diesem Forum, welcher exakt deinen Fehler behandelt. FAQ hat dazu auch was zubieten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
phlip
Mini JLI'ler



Anmeldedatum: 27.08.2005
Beiträge: 39

Medaillen: Keine

BeitragVerfasst am: 08.11.2005, 13:26    Titel: Re: Linker Fehler Antworten mit Zitat

@smile_virus, Greven
phlip hat Folgendes geschrieben:
Nein, ich hab kein falsches Projekt ausgewählt.

Wäre sehr dankbar für Hilfe.Das nervt nämlich wie Sau.


@AFE-GmdG:
Wenn das Programm noch laufenwürde, könnte ich den Debug Ordner nicht löschen. Oder etwa nicht?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
CorDharel
Junior JLI'ler



Anmeldedatum: 15.10.2002
Beiträge: 73
Wohnort: Winterthur, Zürich, CH
Medaillen: Keine

BeitragVerfasst am: 09.11.2005, 10:28    Titel: Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:
Wenn du dein Projekt einmal Compilieren kannst und danach nicht mehr, ist es sehr wahscheinlich, dass die Exe-Datei noch ausgeführt wird, wenn du erneut kompilieren willst. So existiert nämlich ein Schreibschutz auf dieser und der Linker könnte zwar, darf aber nicht Wink
Lass dein Programm doch mal im Debugger schrittweise ablaufen und überprüfe, ob du dein Programm auch wirklich beendest (und nicht nur das Hauptfenster geschlossen wird)


Wenn man nicht mehr im Debugmodus ist dann ist das Programm doch ganz beendet oder? Oder kann es noch weiterlaufen?

Und schauen ob es ganz geschlossen wird bedeutet Task Manager, right? Confused
_________________
Greetz CorDharel
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
phlip
Mini JLI'ler



Anmeldedatum: 27.08.2005
Beiträge: 39

Medaillen: Keine

BeitragVerfasst am: 19.11.2005, 17:52    Titel: Antworten mit Zitat

Mir ist jetzt aufgefallen, dass der fehler nur kommt wenn ich in der Datei Direct3D.h was änder.
Ich hoffe das ist nicht zu viel Code.
In der utils.h steht die Funktion ReleaseObj()
Exception erklärt sich sich von selbst (schöne Tutorials Patrick Wink )
CPP:
// ###########################################################################
// Datei:        Direct3D.h
// ###########################################################################
// Autor:        phlip
// Erstellt:     19.11.2005
// Änderungen:   19.11.2005 Datei/Klasse erstellt
// ###########################################################################
// Beschreibung: Direct3D - Klasse

#if !defined(__Direct3D_h__)
#define __Direct3D_h__

// L I N K E R ###############################################################

#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")
#pragma comment(lib, "dxguid.lib")

// I N C L U D E S ###########################################################

#include "utils.h"
#include "Exceptions.h"   
#include <d3d9.h>
#include <d3dx9.h>
#include <string>
#include <windows.h>

// D E F I N I T I O N E N ###################################################


// S T R U K T U R E N #######################################################
   
   //Direct3D Klasse
class CDirect3D
{
   public:
      CDirect3D();
      ~CDirect3D();

      bool Init(HWND hWnd, bool Windowed = true);
      LPDIRECT3D9   GetD3D();      
      LPDIRECT3DDEVICE9 GetDevice();   
      LPDIRECT3DSURFACE9 GetBackBuffer();

      void BeginScene();
      void EndScene();

   protected:
      LPDIRECT3D9         m_D3D;      
      LPDIRECT3DDEVICE9   m_Device;   
      LPDIRECT3DSURFACE9   m_BackBuffer;   
};


// F U N K T I O N E N #######################################################

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC Construktor
//
// Setzt Anfangswerte
// ///////////////////////////////////////////////////////////////////////////
CDirect3D::CDirect3D()
{
   m_D3D = NULL;      
   m_Device = NULL;   
   m_BackBuffer = NULL;
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC Init
//
// Initialisiert D3D
// ///////////////////////////////////////////////////////////////////////////
bool CDirect3D::Init(HWND hWnd, bool Windowed)
{
   if(!(m_D3D = Direct3DCreate9(D3D_SDK_VERSION)))
   {
      EXCEPTION("Can't create Direct3D object.");
      return false;
   }

   D3DDISPLAYMODE DisplayMode;

    if(FAILED(m_D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &DisplayMode)))
   {
      EXCEPTION("Can't get AdapterDisplayMode.");
      return false;
   }

   D3DPRESENT_PARAMETERS PParams;
   ZeroMemory(&PParams,sizeof(PParams));

   PParams.SwapEffect = D3DSWAPEFFECT_DISCARD;
   PParams.hDeviceWindow = hWnd;
   PParams.Windowed = Windowed;
   PParams.MultiSampleType  = D3DMULTISAMPLE_NONE;

   RECT ClientRect;
   if(!GetClientRect(hWnd, &ClientRect))
   {
      EXCEPTION("Can't get ClientRect.");
      return false;
   }
   PParams.BackBufferWidth = ClientRect.right;
   PParams.BackBufferHeight = ClientRect.bottom;
   
   PParams.BackBufferFormat = DisplayMode.Format;


   if(FAILED(m_D3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
      D3DCREATE_HARDWARE_VERTEXPROCESSING, &PParams, &m_Device)))
   {
      EXCEPTION("Can't create Direct3D Device.");
      return false;
   }
   
   if(FAILED(m_Device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &m_BackBuffer)))
   {
      EXCEPTION("Can't get BackBuffer.");
      return false;
   }

   return true;   
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC BeginScene
//
// Beginn der D3D Scene
// ///////////////////////////////////////////////////////////////////////////
void CDirect3D::BeginScene()
{
   if(FAILED(m_Device->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 255), 0, 0)))
   {
      EXCEPTION("Can't clear BackBuffer.");      
   }

   if(FAILED(m_Device->BeginScene()))
   {
      EXCEPTION("Can't begin Scene.");      
   }   
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC EndScene
//
// Ende der D3D Scene
// ///////////////////////////////////////////////////////////////////////////
void CDirect3D::EndScene()
{
   if(FAILED(m_Device->EndScene()))
   {
      EXCEPTION("Can't end Scene.");      
   }
   
   if(FAILED(m_Device->Present(0, 0, 0, 0)))
   {
      EXCEPTION("Can't present Scene.");      
   }            
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC GetD3D
//
// Gibt D3D Objekt zurück
// ///////////////////////////////////////////////////////////////////////////
LPDIRECT3D9   CDirect3D::GetD3D()
{
   return m_D3D;   
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC GetDevice
//
// Gibt D3D Device zurück
// ///////////////////////////////////////////////////////////////////////////
LPDIRECT3DDEVICE9 CDirect3D::GetDevice()
{
   return m_Device;   
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC GetBackBuffer
//
// Gibt BackBuffer zurück
// ///////////////////////////////////////////////////////////////////////////   
LPDIRECT3DSURFACE9 CDirect3D::GetBackBuffer()
{
   return m_BackBuffer;   
}

// ///////////////////////////////////////////////////////////////////////////
// PUBLIC Destruktor
//
// Gibt Speicher wieder frei
// ///////////////////////////////////////////////////////////////////////////
CDirect3D::~CDirect3D()
{
   ReleaseObj(m_BackBuffer);
   ReleaseObj(m_Device);
   ReleaseObj(m_D3D);
}

#endif


Zuletzt bearbeitet von phlip am 30.08.2011, 12:59, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 19.11.2005, 20:33    Titel: Antworten mit Zitat

phlip
Freut mich das Du Dir etwas von meinem Codingstil angewöhnt hast aber man kann noch was dran Pfeilen:

1. die ganzen Getter raus, richtige Pros machen das mit friend Wink
2. Singleton rulz. Die Klasse wird ja nur 1x instanziert, also wäre ein Singleton perfekt! (Spart sogar 1 zeile Very Happy)
3. Paar kommentare was die Funktionsaufrufe bedeuten (Laien lernen daraus schneller Wink)
4. ich steh mehr auf das suffix _ als auf das präfix m_ aber jeder wie er will Wink
5. Eindeutigkeit: Ich habs nicht so mit LP Wink Typedefs sucken für mich total, aber auch hier wieder, jeder wie will Smile
6. Bitte benutz auch Cpp dateien, übersichtlichkeit ist das A und O im dev.
7. Bitte benutz initialisierungslisten (siehe FunnyBreak tutorial), dieses hier
CPP:
   m_D3D = NULL;       
   m_Device = NULL;   
   m_BackBuffer = NULL;
Ist 1. Langsam und 2. sehr unschön
8.
CPP:
void CDirect3D::BeginScene()
sieht für mich aus wie ein Funktionsaufruf bzw. lokale Funktionsprototypierung. daher ein void in die Klammern Wink aber auch hier wieder: geschmackssache.
9. EXCEPTION bringt bei mir nur was mit DEBUG_STACK Wink Sonst weiß ich auch nicht woher die Exceptions kommen Very Happy
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum