JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=0382f6149564386b8c110891f2faf540Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

"too many references" fehler / warnmeldung

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


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 30.04.2006, 16:48    Titel: "too many references" fehler / warnmeldung Antworten mit Zitat

Hi,

wenn ich meinen Quelltext compiliere erhalte ich die Warnmeldung:

BK4504 : file contains too many references; ignoring further references from this source

das Programm läuft aber ohne weiteres. Was genau ist mit "freferences" gemeint und kann ich das munter ignorieren?

grüße
RayJunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


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

BeitragVerfasst am: 30.04.2006, 16:58    Titel: Antworten mit Zitat

MSDN hat Folgendes geschrieben:
There are more than 64,000 references to a single symbol in the .cpp file.

To correct this problem, you should split your .cpp file into two or more .cpp files.


http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vctbsBSCMAKEWarningBK4504.asp

Bitte, wie hast du das denn hinbekommen?! Shocked
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 30.04.2006, 17:11    Titel: das ist eine gute Frage! Antworten mit Zitat

Keine Ahnung wie ich das hinbekommen habe!
die erklärung in der online lib für den fehler hab ich auch schon gefunden, aber ist es jetzt überhaupt ein fehler oder nur eine warnung, laufen tut nämlich alles, und ich weiß nicht was der mit REFERENCEN meint.
was sind in diesem den referencen? dann kann ich mir auch überlegen woher ich so viele zusammenbekommen habe Wink
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 30.04.2006, 17:28    Titel: Antworten mit Zitat

Referenzen sind sowas:
CPP:
int other_integer=256;

//Normales reservieren eines Speicherbereichs für einen integer
int normal_integer=other_integer;

//Zeiger auf einen Integer
int* pointer_integer=&other_integer;

//Referenz auf einen Integer - entspricht intern dem Zeiger, aber wird von der Syntax wie ein normaler Integer benutzt
int& reference_integer=other_integer;


Ich denke mal, dass das in der Fehlermeldung gemeint ist, ich hab so eine selbst noch nie bekommen Surprised
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
GreveN
JLI Master


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

BeitragVerfasst am: 30.04.2006, 17:50    Titel: Antworten mit Zitat

Es ist eine Warnung, allerdings solltest du Warnungen auch nicht einfach übergehen, das wäre sinnwidrig.

Wenn du Code gibst, können wir dir eventuell helfen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 30.04.2006, 18:07    Titel: erstmal danke für die tips Antworten mit Zitat

hi!
danke für die ratschläge. jetzt weiß ich auch was damit genau gemeint ist. referenzen klar. komisch nur, ich verwende die eigentlich GARNICHT.
der Gesamte Quellcode ist Ellenlang deshalb unmöglich hier zu posten und ich kann auch nicht erwarten das den jemand komplett in augenschein nimmt. Aber ich werde meine augen offenhalten vielleicht finde ich bald die
lösung. Im moment habe ich noch keine idee... vielleicht irgendwo eine schleife die gleich tausende referencen definiert... kann ich mir aber kaum
vorstellen. wie gesagt sowas habe ich noch garnicht angewendet...eigentlich *lol*
wird mir schonnoch dämmern Wink trotzdemnochmal danke für die infos!
grüße
Rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


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

BeitragVerfasst am: 30.04.2006, 18:15    Titel: Antworten mit Zitat

(De)referenzieren kann z.B. auch bedeuten über Zeiger auf Objekte zuzugreifen, muss also nicht zwingend ein Konstrukt sein, wie von TLoP beschrieben. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 30.04.2006, 18:23    Titel: jetzt kommen wir der sache näher... Antworten mit Zitat

Hi! jetzt kommen wir der sache langsam näher,
ich verwende eine objektklasse, ähnlich der klasse aus dem buch.
diese klasse wird aber öfter neu definiert. Also objekt gelöscht, bzw
gesäubert und erneut mit anderer textur usw versehen. bei dieser
texturzuweißung zum bleistift oder anderen funktionen die damit
zusammenhängen könnten referenzen entstehen. hier mal ein
beispiel der funktion die ich zur texturzuweißung sehr oft
im quellcode verwende:

Code:
void Objekt::AddTexture(LPDIRECT3DTEXTURE9 lpTexture) // Textur für das Sprite festlegen
{
    D3DSURFACE_DESC desc;    // Beschreibung des zu Grunde liegenden Surfaces

    lpTexture->GetLevelDesc(0,&desc);
   
    m_Breite  = desc.Width;  // Breite und Höhe speichern
    m_Hoehe = desc.Height;
   m_HalbeBreite = m_Breite/2;
   m_HalbeHoehe = m_Hoehe/2;

   m_RotationsPunkt = D3DXVECTOR2((float)m_Breite/2, (float)m_Hoehe/2);
    m_AnimationVec.push_back(lpTexture);    // Zeiger auf die Textur speichern
}


Fehler gefunden?
wenn ja, ist das nur eine art "performance" warnung, dann laß ich es einfach so, weil ich wüßte nicht wie ich es jetzt geschickt umgehen kann, zumindest nicht ohne erheblichen aufwand.

grüße an alle
Rayjunx
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
fast hawk
Senior JLI'ler



Anmeldedatum: 15.07.2005
Beiträge: 237
Wohnort: Freiburg
Medaillen: Keine

BeitragVerfasst am: 30.04.2006, 18:44    Titel: Antworten mit Zitat

sowie es mir scheint ist die Funktion ok.
Aber sowie ich es verstanden musst du ein ja eine Klasse 60,000 über mal mit einen Zeiger aufrufen und das ist en weng viel Wink . Vorrallem weil wenn du ne while Schleifen hast zählt die nur ein mal auch wenn sie dann dynamisch millarden mal läuft. Kommentier halt mal ein bisschen Code aus damit du ungefähr die Stelle beschreiben kannst und dann post mal den Code.
_________________
Jetziges Projekt: The Ring War
Status: 40%
-----------------------------------
Nicht weil es schwer ist, wagen wir es nicht, sondern weil wir es nicht wagen, ist es schwer.
--
Lucius Annaeus Seneca (4)
röm. Philosoph, Dramatiker und Staatsmann
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
RayJunx
JLI'ler


Alter: 43
Anmeldedatum: 16.01.2006
Beiträge: 130
Wohnort: Bayern
Medaillen: Keine

BeitragVerfasst am: 01.05.2006, 09:52    Titel: danke Antworten mit Zitat

danke nochmal für die info,
werd ich unter diesem gesichtspunkt mal genauer unter die lupe nehmen,
kann aber dauern. hoffe ich finde dann dieses topic noch wenn ich die lösung habe Wink
_________________
Just a Freak
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
proggaholic
Junior JLI'ler


Alter: 36
Anmeldedatum: 07.05.2005
Beiträge: 85
Wohnort: Heap
Medaillen: Keine

BeitragVerfasst am: 03.05.2006, 20:35    Titel: Antworten mit Zitat

Also meines Wissens nach haben (hatten?) Microsoft-Compiler und damit eventuell auch andere eine Beschränkung auf höchstens 64000 (und ein paar zerquetschte) Zeiger, die gleichzeitig verwaltet werden können. Dies lag früher IMHO daran, dass man davon ausgegangen ist, dass ein Programmierer so viele Zeiger eh nie brauchen würde (angesichts der Tatsache, dass es so viele Adressen bei dem damals begrenzten Speicher gar nicht gab). Unter dem Borland C++ Compiler 3.1 (noch die DOS-IDE mit Mausunterstützung, kennt das hier jemand? ^^) ist es z.B. auch nicht möglich, ein Array mit über 64000 Elementen anzulegen, da man da gesagt hat, soviel Speicher steht sowieso nie zur Verfügung, und da hat man dann gesperrt, auch aus Gründen der Verwaltung, denn bei der Indizierung des 63999ten Elements wäre einiges an Arbeit angefallen etc. etc. Bei Referenzen ist mir sowas noch nicht zu Ohren gekommen, hört sich aber nach einer Endlosschleife an oder einem überladenen Zeiger-Array (ist vielleicht auch unter REFERENCE zu verstehen, kA), aber die höhere Priorität würde ich eindeutig einer Schleife einräumen, die deine Objekte/Structs oder was immer du auch hast, anlegt oder in einen Vektor etc. einträgt, musst halt schauen.

Der Hinweis "to a single symbol" ist allerdings ebenfalls sehr verdächtig, das würde praktisch bedeuten, dass du auf ein einziges Objekt die 64000 Zeiger/Referenzen gemacht hast, was dem Compiler natürlich nicht sehr sinnvoll erscheint. Ebenfalls seltsam ist "ignoring further references from this source", was praktisch bedeuten würde, dass in der aktuellen Datei noch weit über die bisher schon existierenden 64000 "Referenzen" weitere generiert werden sollen...da läuft irgendwas gewaltig schief. Also, am besten die Schleifenbedingungen nochmal durchsehen, step-by-step debuggen und die Bedingungen beobachten, dort dürfte dann aller Wahrscheinlichkeit nach was zu finden sein. Oft hilft es auch, den Code jemand Fremdem (d.h. jemand, der nicht am selben Code programmiert, aber vielleicht durchaus am selben Projekt, Bekannter, Freund, etc.) in die Hand zu drücken, dem fällt sowas wahrscheinlich auf den 2. Blick auf.

mfg
proggaholic
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden MSN Messenger
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