Compilerfehler beim Umstellen von Codeblocks auf VC

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Compilerfehler beim Umstellen von Codeblocks auf VC

Beitrag von Jonathan »

Ich habe mein Projekt krzlich von Codeblocks nach VC umgestellt. Leider kriege ich es nicht hin, es richtig zu kompilieren:

Code: Alles auswählen

	// This function computes the maximal scaling of this matrix (maximum of the
	// return values of GetScalingX/Y/Z())
	inline float GetMaximalScaling() const{
		return sqrt(std::max(_11*_11+_12*_12+_13*_13, std::max(_21*_21+_22*_22+_23*_23,_31*_31+_32*_32+_33*_33)));
	}
Fehler 17 error C2589: '(': Ungültiges Token auf der rechten Seite von '::'


und:

Code: Alles auswählen

//min,max functions for Vectors,
template<typename t> Vector3<t> min(const Vector3<t>& V1, const Vector3<t>& V2)
{
	return Vector3<t>(std::min(V1.x, V2.x), std::min(V1.y, V2.y), std::min(V1.z, V2.z));
}

template<typename t> Vector3<t> max(const Vector3<t>& V1, const Vector3<t>& V2)
{
	return Vector3<t>(std::max(V1.x, V2.x), std::max(V1.y, V2.y), std::max(V1.z, V2.z));
}
Fehler 1 error C2988: Unerkannte Vorlagendeklaration/-definition

Unter Codeblocks mit MinGW hat das alles wunderbar funktioniert und ich sehe da jetzt eigentlich auch kein richtiges Problem. Hat dazu jemand eine Idee?
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
Aramis
Moderator
Beiträge: 1458
Registriert: 25.02.2009, 19:50
Echter Name: Alexander Gessler
Wohnort: 2016
Kontaktdaten:

Re: COmpilerfehler biem umstellen von Codeblocks auf VC

Beitrag von Aramis »

Guck mal, ob min,max nicht irgendwo in den Compiler-Headern als #define steht.
Jörg
Establishment
Beiträge: 296
Registriert: 03.12.2005, 13:06
Wohnort: Trondheim
Kontaktdaten:

Re: COmpilerfehler biem umstellen von Codeblocks auf VC

Beitrag von Jörg »

Am einfachsten erzeugst Du Dir dafuer ein ´preprocessed´ Source. Dort sind alle Praeprozessordirektiven aufgeloest, alle includes direkt eingebunden. Dann siehst Du sofort, was an den fraglichen Stellen passiert ist. Die VC-Complier-Option dafuer hab ich eben nicht im Kopf, aber die findest Du bestimmt auch alleine.
Benutzeravatar
eXile
Establishment
Beiträge: 1136
Registriert: 28.02.2009, 13:27

Re: COmpilerfehler biem umstellen von Codeblocks auf VC

Beitrag von eXile »

Jörg hat geschrieben:Am einfachsten erzeugst Du Dir dafuer ein ´preprocessed´ Source. Dort sind alle Praeprozessordirektiven aufgeloest, alle includes direkt eingebunden. Dann siehst Du sofort, was an den fraglichen Stellen passiert ist. Die VC-Complier-Option dafuer hab ich eben nicht im Kopf, aber die findest Du bestimmt auch alleine.
Zum Beispiel hier:
http://msdn.microsoft.com/en-us/library/8z9z0bx6.aspx
http://msdn.microsoft.com/en-us/library/3xkfswhy.aspx
Benutzeravatar
Schrompf
Moderator
Beiträge: 4879
Registriert: 25.02.2009, 23:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: COmpilerfehler biem umstellen von Codeblocks auf VC

Beitrag von Schrompf »

Die Windows-Header enthalten tatsächlich #defines für min und max. Man beachte: es sind Makros, aber kleingeschrieben und zentral im Windows-Header. Mann, hab ich die damals dafür gehasst, als ich das rausgefunden habe. Um das zu vermeiden, musst Du NOMINMAX vor den Windows-Includes definieren. Etwa so:

Code: Alles auswählen

#if PLATTFORM == WINDOWS
  #define NOMINMAX
  #include <Windows_Includes.h>
#endif
Früher mal Dreamworlds. Früher mal Open Asset Import Library. Heutzutage nur noch so rumwursteln.
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Compilerfehler beim Umstellen von Codeblocks auf VC

Beitrag von Jonathan »

Hachja, das ist mal wieder toll.
Das geniale ist, dass ich die windows.h niemals selber einbinde sondern nur von mir benutzte Bibliotheken, Mit einem globalen define lässt sich das jetzt kompilieren, toll ist das aber nicht.
Und klein geschriebene Makros, dafür sollte man die mehr als einmal verprügeln...
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Benutzeravatar
TGGC
Establishment
Beiträge: 569
Registriert: 15.05.2009, 18:14
Benutzertext: Ich _bin_ es.
Alter Benutzername: TGGC
Echter Name: Ich _bin_ es.
Wohnort: Mainz
Kontaktdaten:

Re: Compilerfehler beim Umstellen von Codeblocks auf VC

Beitrag von TGGC »

Jetzt frag ich mich nur, was hat das mit VC zu tun? windows.h gehoert ja eigentlich zum Platform SDK, also solange man das nicht wechselt sollte sich dsa Verhalten auch nicht aendern. f'`8k


Gruß, TGGC (Was Gamestar sagt...)
Benutzeravatar
Jonathan
Establishment
Beiträge: 2390
Registriert: 04.08.2004, 20:06
Kontaktdaten:

Re: Compilerfehler beim Umstellen von Codeblocks auf VC

Beitrag von Jonathan »

Es scheint so, dass manche der von mir benutzten Libs nur dann windows.h einbinden, wenn MSVC oder so definiert ist.
Deswegen war mir auch überhaupt nciht klar, das die Datei überhaupt irgendwo inkludiert wird.
Lieber dumm fragen, als dumm bleiben!
https://jonathank.de/games/
Antworten