Spiele-Programmierung
-
cobra11freak schrieb:
sfml-window -d.libKönnte der Abstand zwischen "window" und "-d" den Fehler verursachen oder ist das nur ein Schreibfehler? Und hast du SFML jetzt rekompiliert (also die heruntergeladene Projektmappe, nicht dein eigenes Projekt)?
-
Ich hab das jezt mit dem -d anders gemacht...
Das gibt das:1>------ Erstellen gestartet: Projekt: SFML, Konfiguration: Debug Win32 ------ 1>Verknüpfen... 1>MSVCRTD.lib(crtexew.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WinMain@16" in Funktion "___tmainCRTStartup". 1>C:\Dokumente und Einstellungen\Vincent-Silver\Eigene Dateien\Visual Studio 2008\Projects\SFML\Debug\SFML.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise. 1>Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Vincent-Silver\Eigene Dateien\Visual Studio 2008\Projects\SFML\SFML\Debug\BuildLog.htm" gespeichert. 1>SFML - 2 Fehler, 0 Warnung(en) ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========Hast du Visual C++ 2005 oder auch 2008.
Ich find das irgendwie nicht gut. Ständig irgendwelche Fehler...:(
Oder liegt das an mir?
-
cobra11freak schrieb:
Ich hab das jezt mit dem -d anders gemacht...
Wie anders? Werd ein bisschen genauer. Du solltest folgende Punkte beachten:
- Lade dir SFML 1.3 herunter, damit du sicher eine funktionierende Version hast.
- Rekompiliere endlich die SFML-Projektmappe (...\SFML\build\vc2008\SFML.sln) mit der gewünschten Konfiguration.
- Ergänze bei den Optionen die Verzeichnisse so, dass alle benötigten SFML-Bibliotheken gefunden werden
- Füge die Linker-Abhängigkeiten zu den Projekt-Eigenschaften hinzu, und zwar abhängig von deiner Konfiguration (Release/Debug, statisch/dynamisch).
- Erstelle dein eigenes Projekt neu.
cobra11freak schrieb:
Hast du Visual C++ 2005 oder auch 2008.
Ich find das irgendwie nicht gut. Ständig irgendwelche Fehler...:(
Oder liegt das an mir?Ja, ich benutze VC++ 2008 Express. Am Anfang musste ich mich auch mit diesen Linkerfehlern herumschlagen. Aber wird schon gehen

-
cobra11freak schrieb:
Na das mit dem WinMain() ist ja wohl der größte Schwachsinn

Das ergiebt niemals einen Linker Error...(Verbessert mich)soso, ich sehe jetzt aber schon zwei buildlogs, die sich darüber beschweren
das war auch nicht ein hinweis, das du eine WinMain() in der bibliothek, die du versuchst zu bauen, brauchst, sondern mehr ein wink mit dem zaunpfahl, dass eine bibliothek auch als bibliothek gelinkt werden sollte. 
-
Also ersmal Danke für die Hilfe:)
Jezt Kompieliert er das ganze und LINKT es korrekt.
Es lag wohl an der WinMain(), da hatte ich unrecht
Aber beim starten des Programmes kommt die Fehlermeldung das die dll "sfml-window-d" nicht gefunden wurde.
Vieleicht lasse ich das mit dem -d Weg.
Ich habe SFML rekompieliert und dann ne WinMain() Funktion daraus gemacht.
Liegt vieleicht daran das ich eine Win32 Anwendung gemacht habe und keine Konsolen
Anwendung
-
.<
-
cobra11freak schrieb:
Also ersmal Danke für die Hilfe:)
Jezt Kompieliert er das ganze und LINKT es korrekt.
Es lag wohl an der WinMain(), da hatte ich unrecht
Aber beim starten des Programmes kommt die Fehlermeldung das die dll "sfml-window-d" nicht gefunden wurde.
Vieleicht lasse ich das mit dem -d Weg.
Ich habe SFML rekompieliert und dann ne WinMain() Funktion daraus gemacht.
Liegt vieleicht daran das ich eine Win32 Anwendung gemacht habe und keine Konsolen
Anwendung
Mit der WinMain sollte das egtl. gar nix zu tun haben. Die Compilerfehler sehen sehr nach einfach falsch gelinkten libss aus. Wieso linkst du die dynamischen? Probiers ma mit den statischen libss (sind im gleichen Verzeichnis wie die dynamischen und werden mitgeliefert) [einfach sfml-xxxxx.lib ohne -d einbinden].
Windows braucht für deine libs noch die DLLs. Windows sucht nach den DLLs in 2 Verzeichnissen, einmal im Verzeichnis in dem deine Anwendung zu finden ist (also die *.exe) und in x:\Windows\System32 . Schau mal in das Verzeichnis in das du die SFML entpackt hast. im lib ordner dort sind die jeweiligen dlls.
-
Seit v1.3 heißen die statischen libs so:
Debug Release sfml-window-[b]s[/b]-d.lib und sfml-windows-[b]s[/b].libMfG
-
So es geht jezt...:)
Allerdings habe ich jezt ein anderes Problem:
Das Fenster öffnet sich nicht und der Debugger sagt das:Der Thread 'Win32 Thread' (0x13f0) hat mit Code 1 (0x1) geendet. Das Programm "[3928] SFML.exe: Systemeigen" wurde mit Code 1 (0x1) beendet.Der Quelltext hat sich mittlerweile auch geändert...
#include "stdafx.h" #include "SFML.h" #include <SFML/Window.hpp> #include <SFML/Graphics.hpp> int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nFunsterStil) { sf::RenderWindow App(sf::VideoMode(800, 600, 32), "SFML Graphics"); sf::Image Image; if (!Image.LoadFromFile("sprite.tga")) return EXIT_FAILURE; sf::Sprite Sprite(Image); Sprite.SetColor(sf::Color(0, 255, 255, 128)); Sprite.SetPosition(200.f, 100.f); Sprite.SetScale(2.f, 2.f); while (App.IsOpened()) { sf::Event Event; while (App.GetEvent(Event)) { // Close window : exit if (Event.Type == sf::Event::Closed) App.Close(); } float ElapsedTime = App.GetFrameTime(); if (App.GetInput().IsKeyDown(sf::Key::Left)) Sprite.Move(-100 * ElapsedTime, 0); if (App.GetInput().IsKeyDown(sf::Key::Right)) Sprite.Move( 100 * ElapsedTime, 0); if (App.GetInput().IsKeyDown(sf::Key::Up)) Sprite.Move(0, -100 * ElapsedTime); if (App.GetInput().IsKeyDown(sf::Key::Down)) Sprite.Move(0, 100 * ElapsedTime); if (App.GetInput().IsKeyDown(sf::Key::Add)) Sprite.Rotate(- 100 * ElapsedTime); if (App.GetInput().IsKeyDown(sf::Key::Subtract)) Sprite.Rotate(+ 100 * ElapsedTime); App.Draw(Sprite); App.Display(); } return EXIT_SUCCESS; }
-
Also so schwer ist das doch nun auch wieder nicht.
Es gibt da ein ganz einfaches Anfänger Tutorial für directx und cpp.
Einfach mal auf gidf.de gucken und da directx und c++ eintippen. Nicht immer die Leute in den Foren nerven mit so einfachen Fragen.
LG
-
Wenn du eine Win32 Anwendung erstellt hast, musst du vielleicht so vorgehen:
http://www.sfml-dev.org/tutorials/1.3/graphics-win32.php
Aber mach doch einfach mal ne Konsolenanwendung, für'n Anfang...
MfG
-
Hi!
Ich hab es jezt endlich hinbekommen...:)
Das Problem mit der dll hab ich so gelöst in dem ich die dll's von SFML in mein Projekt-Verzeichniss gepackt habe!
Jezt geht es alles
Vielen Dank euch Allen!
MfG cobra11freak