C++ Vector macht unresolved external symbol - Fehler

F

Furtano

Gast
Hallo,

ich möchte in der Grafiklib SFML einen Vector von Rechtecken anlegen.
Leider funktioniert das nicht so wie gedacht.
Idee des Programms: Bei jedem Drücken der Leertaste wird ein Rectangle gezeichnet, aufsteigend nach dem Platz im Vector.

Ich bekomme bei Zugriff auf den Vector immer diesen Fehler:


Code:
Error	2	error LNK2019: unresolved external symbol __imp___CrtDbgReportW referenced in function "public: class sf::RectangleShape & __thiscall std::vector<class sf::RectangleShape,class std::allocator<class sf::RectangleShape> >::operator[](unsigned int)" (??A?$vector@VRectangleShape@sf@@V?$allocator@VRectangleShape@sf@@@std@@@std@@QAEAAVRectangleShape@sf@@I@Z)	C:\Users\Christian\Desktop\uni\8_semester\Code\SDL1\SDL1\Source2.obj

PHP:
#include <SFML/Window.hpp>
#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <iostream>



using namespace std;

int main (){
	 sf::RenderWindow window(sf::VideoMode(600, 600), "My window");
	 float i = 0;

	 bool timeOver = false;
	 std::vector <sf::RectangleShape> grid;
	 int spaceCounter = 0;
		
		
		for (int y = 0; y < 600; y = y+ 50){
			for (int x = 0; x < 600; x = x + 50){	
					cout<< " " << x  << " ";
					sf::RectangleShape shape(sf::Vector2f(50 ,50));
					shape.setFillColor(sf::Color(255,255,255));
					shape.setPosition((float)x, (float)y);
					shape.setOutlineThickness(1);
					shape.setOutlineColor(sf::Color(0,0,0));
					grid.push_back(shape);
			}
				
		}

		cout << "SIZE : " << grid.size();
		
	while (window.isOpen())
    {

	

		
		// check all the window's events that were triggered since the last iteration of the loop
        sf::Event event;
        while (window.pollEvent(event))
        {
			
            // "close requested" event: we close the window
            if (event.type == sf::Event::Closed)
                window.close();
        }

        // clear the window with black color
        window.clear(sf::Color::Black);

		

		

		if (sf::Keyboard::isKeyPressed(sf::Keyboard::Space) && (spaceCounter < grid.size())){					
			window.draw(grid[spaceCounter]);
			spaceCounter++;
		}
        // draw everything here...
		
        // end the current frame
        window.display();
    
	
	}

	return 0;
}

LG,
Furtano
 
Vergessen, die Bibliothek reinzulinken?

€: Oder wurde die Bibliothek vielleicht mit einem anderen Buildsystem erstellt? In C++ backt jeder Hersteller sein eigenes Süppchen und es gibt keine ABI, auf die man sich verlassen kann. Im dem Fall hilft nur selber bauen.
 
Zuletzt bearbeitet:
Schau mal hier: http://social.msdn.microsoft.com/Fo...4/unresolved-external-symbol-impcrtdbgreportw

Eine mögliche Fehlerquelle:

I had a similar error with "__imp___CrtDbgReportW".
It was triggered when I used a std::vector in my code.

Turns out I was compiling a Release build with _DEBUG defined.
This was in the C/C++ Preprocessor Definitions line in the Project Properties dialog.

Removing _DEBUG (plus a bunch of other xxxDEBUGxxx defs) solved the linking problem.
Ergänzung ()

Und hier noch mal: http://stackoverflow.com/questions/6003368/unresolved-externals-in-c-when-using-vectors-and-find
 
@antred
ich glaube nicht, dass es daran liegt. ich compiliere immer im Debug Modus und habe auch bei den Preproccessor nichts in diese Richtung verändert.

Übrigens: Wenn ich das aus Zeile 58 auskommentiere : grid[spaceCounter]
dann lässt es sich ohne Fehler compilieren.

@asdfman
ich habe extra die passende Version von
http://www.sfml-dev.org/download/sfml/2.1/
heruntergeladen (visual studio 2012).
Ergänzung ()

@antred
Hey danke!!! Es war das simple Debug im Präprozessor!
 
Hmm, seltsam. Laut der MSDN-Doku für die _CrtDbgReportW-Funktion, muß man für deren Benutzung lediglich <crtdbg.h> inkludieren. Explizites Hinzulinken einer .lib-Datei nicht nötig. Ich verstehe nicht, was da schiefläuft. :confused_alt:
Ergänzung ()

Furtano schrieb:
Ergänzung ()

@antred
Hey danke!!! Es war das simple Debug im Präprozessor!

Oh, ok. :)
 
Zurück
Oben