Falsche Zeile bei Fehlermeldung unter vc++ 2012



  • Hallo,

    ich habe ein merkwürdiges Problem mit dem Visual C++ Compiler. Als IDE nutze ich Code::Blocks, allerdings glaube ich nicht, dass folgendes Problem an Code::Blocks liegt:

    Ich erstelle eine Multithreaded DLL Runtime Library (64 Bit). Außerdem werden ettliche Header einer externen API benutzt. Ansich funktioniert das kompilieren sehr gut, nur meldet mir die cl.exe bei nachvollziehbaren Fehlern eine falsche Zeilennummer. Dies würde die Fehlersuche auf Dauer leider ziemlich erschweren.

    Vielleicht hat jemand eine Idee. Was könnte da los sein?

    Vielen Dank,
    Peter

    PS: Ich habe es eben noch mit den Compilern aus VS 2008 und 2010 probiert. Da tritt das gleiche Problem auf.



  • Poste doch mal ein Beispiel mit Fehlermeldung und Code und Zeile.
    Vielleicht sind das nicht die falschen Zeilen nur nciht so offensichtlich jetzt zu sehen, weil der eig. Fehler später liegt.



  • Hallo,

    vielen Dank für Deine Hilfe, Nathan.

    Ich habe leider nur ein relativ umfangreiches Beispiel parat, daher erstmal nur Auszüge aus dem Code

    for ( ; !iter.isDone(); iter.next() )
    
    	{
    
    		MObject tempObjectParent, tempObjectChild;
    
    		iter.getDependNode(tempObjectParent);
    
            MGlobal::displayInfo(iter.length()); // hier der Fehler, eigentlich Zeile 277
    
    		if (tempObjectParent.apiType() == MFn::kTransform)
    
    		{
    
    			dagNod.setObject(tempObjectParent);
    
    			tempObjectChild = dagNod.child(0, &stat);
    
    		}
    

    Hier kommt die Fehlermeldung:

    src\raycastPointCmd.cpp(145) : error C2039: 'length': Ist kein Element von 'MItSelectionList'

    Die Meldung ist auf jeden Fall gerechtfertigt, nur eben bezieht sie sich auf die falsche Zeile.

    Hier noch ein Auszug, was tatsächlich bei der in der Fehlermeldung genannten Zeile 145 ist:

    class raycastPointCmd : public MPxCommand
    
    {
    
    	public:
    
    		raycastPointCmd();
    
    		virtual ~raycastPointCmd();
    
    		static void* creator();
    
    		bool isUndoable() const;
    
    		MStatus doIt(const MArgList&);
    
    		MStatus undoIt(); // Zeile 145
    
    };
    

    Vielleicht verrät der Kompileraufruf auch noch etwas?

    x86_amd64\cl.exe /nologo /MD /DWIN64 /MTd /EHac /D_CONSOLE /DNT_APP /DREQUIRE_IOSTREAM /DNT_PLUGIN /IE:\Coding\CodeBlocks\..\MayaRessources\Maya2015.x64\include /I"E:\Coding\CodeBlocks\..\Microsoft\Microsoft SDKs\Windows\v7.1\include" /I"E:\Coding\CodeBlocks\..\Microsoft\Microsoft Visual Studio 11.0\VC\include" /c src\raycastPointCmd.cpp /FoRelease\Maya2015.x64\src\raycastPointCmd.obj

    Ich wäre für jeden Hinweis sehr dankbar.

    Tausend Dank schon einmal,
    Peter



  • Könnte es sein dass die Zeilenendung der Dateien inkonsistent ist, d.h. nicht durchgängig "\r" "\r\n" oder "\n", sondern gemischt ?
    Das wäre so die einzige Möglichkeit die mir gerade in den Sinn käme...



  • Verdammt! Richtig, DarkShadow44!

    Genau das wars und ich ärgere mich gerade, dass ich nicht selbst darauf gekommen bin. 😞 Interessant, dass cl damit Probleme bekommt, aber irgendwie auch nachvollziehbar.

    Vielen Dank. 👍

    Peter


Anmelden zum Antworten