Falsche Methoden aufgerufen
-
Programmierst du C oder C++? In C++ dienen memcpy und memset dank std::copy und std::fill nur noch der Kompatibilität zu C. Objekte kannst du da sowieso nicht verwenden, also ist der mögliche Anwendungsbereich auf ein Minimum eingeschränkt.
Zum Problem: Versuche das Verhalten in einem kleinen Beispiel zu rekonstruieren. Meistens findet man dann den Fehler schon selbst. Ansonsten das Minimalbeispiel hier posten.
Gruß
Don06
-
hier mein debuggingvorgang:
http://xcpp.de/alsage/bugs/alsaged3dbug.zip
ich seh da einfach keinen Fehler. Aber wie man sagt - fremde Fehler sieht man immer besser.
Wäre nett wenn jemand sich die Sache anschauen würde 
-
mhm. Hat sich irgendjemand das Video angeschaut? "^^
An welcher Stelle könnte etwas falsch sein?
-
Azrael, il Meraz schrieb:
mhm. Hat sich irgendjemand das Video angeschaut? "^^
Geduld scheint ja nicht gerade deine Stärke zu sein (ich betrachte 3 Stunden nicht als Zeit, in der der Thread bereits in Vergessenheit geraten hätte können).
Du kannst aber sicherlich nachvollziehen, dass hier nicht jeder Zeit und Lust hat, sich deinen Debuggingvorgang erst runterzuladen, und anhand dessen den Fehler zu finden, obwohl ihm das Programm selber völlig unbekannt ist?
Versuch doch mal, den Fehler einzuschränken. Dass das bei grossen Projekten nicht gerade einfach ist, dürfte vielen bekannt sein. Du musst aber verstehen, dass es für andere, die das Projekt nicht kennen, noch entsprechend schwieriger bis unmöglich ist.
Deshalb meinen Rat: Probier, nur die relevanten Teile des Codes auszuführen. Also schauen, dass man möglichst wenig Stellen hat, die von aussen etwas beeinflussen könnten. Manchmal hilft es auch, die entsprechende Codestruktur durch ein Modell zu vereinfachen (und verschiedene Abstaktionsebenen durchprobieren, bis man sieht, wo etwas nicht mehr funktioniert).
-
Naja ich wollt wissen ob ich von den leuten nicht zu viel verlange deswegen die frage ob sich jemand das video überhaupt angeschaut hat. Das Problem ist - den Teil hat vorher mein Kollege programmiert. Er ist aber aufgrund schulischen Drucks ausgestiegen und jetzt bin ich wieder alleine. Jetzt hab ich Probleme den Code zu übernehmen. schon mal weil ich mit meinem Code viel weiter war und erstmal alles neu implementieren musste.
Aber ich hab auch gedacht dass ich irgendwo einen blöden Fehler wie das übersehen eines memcpys außerhalb des gültigen Bereiches gemacht habe oder vllt irgendeine C++ - Verhaltensweise nicht kenne, die man aber wissen sollte und deswegen irgendwie der this zeiger doch überschrieben wird. Und so etwas könnte doch auch auf den ersten Blick beim Debuggen auffallen, oder?
Ich weiß in diesem Fall garnicht wie ich den Fehler einschränken sollte. Es scheint etwas mit dem VMT nicht zu stimmen. Und zwar dem VMT zweier Klassen die in einer DLL instanziert werden. Ich habe aber grad mal keine Ahnung wie man das VMT überprüfen kann, außer den _vptr zu überwachen. Der sich bei mir beim Debuggen auch nicht verändert.
Auch unterscheidet sich der Code von der anderen, funktionierenden Implementation bis zu dem Punkt an dem der Fehler auftritt nicht sonderlich stark von der nicht funktionierenden was für mich auch recht verwirrend ist...
naja und ansonsten bin ich hier die ganze Zeit am rumprobieren und versuchen. Mache hier grad eine Art Clean up vom Code. Mein Kollege hat sich hier und da ein paar Verwirrende Sachen erlaubt. kann auch sein dass alles plötlich klappt wenn ich damit fertig bin...
[EDIT] Jetzt muss ich 100 mal gegen die Wand rennen, denn in den Projekteinstellungen war ein define nicht drin, welches ich dazu verwendet habe, die Basisklasse von einer übergeordneten Abstrakten Klasse abhängig zu machen um mein Projekt auch in Delphi verwenden zu können. ARGH!!!
(Problem gelöst)
-
ok wir brauchen den konsruktor von ALSAGE_GUI und das interface von ALSAGE_Renderer.
-
klappt die "logwith" funktion direkt nach dem initengine aufruf ?
-
japs. Absolut alles klappt jetzt. Ich hatte einen ziemlich verworrenen Vererbungsfehler. Im Hauptprojekt hat ALSAGE_Renderer nähmlich von ALSAGE_Renderer_Abstract geerbt und in der ALSAGE_D3D nicht. Und das lag an einem undefiniertem Makro...
-
Hmm... Scheint recht mühsame Arbeit zu sein, was du so erzählst...
Azrael, il Meraz schrieb:
ARGH!!!
Hehe, das kenne ich. Solche "dummen" Fehler lassen sich oft am schwierigsten finden... Trotzdem gut, dass du es lösen konntest.

-
Nexus schrieb:
mühsame Arbeit
Mühsames Hobby

Aber ich wollte meine Engine ja auch umbedingt in der Schule verwenden können und da dürfen wir nur Delphi nutzen "^^
-
Ich hatte damals auch so einen Fehler!
Da lag es aber wirklich an Visual Studio!
Ich habe wirklich nichts geändert und bei einem neuen Projekt hat es dann funktioniert.
Bist du dir sicher, dass er die Funktion aufruft, oder weißt du das nur, durch das Debuggen? Der Unterschied war bei mir groß
Probier's einfach mal!Viele Grüße
tHOMYUpsi, das wär meine "Lösung" gewesen!
