Warum funktionier mein Framework nicht wie sie sollte?
Ich wollte gerade Programme mit Grafik in C++ lernen und benutze das SFML-Framework. Das Problem ist, wenn ich mein Programm testen will erscheint ein Fenster mit dem Fehler: "Das Programm (Dateipfad) kann nicht gestartet werden. Das System kann die angegebene Datei nicht finden.". In der Konsole steht auch noch der Fehler:"Datei "kernel32.lib" kann nicht geöffnet werden.". Ich habe die Datei auch nie erwähnt, den ChatGPT und ein Tutorial (https://www.youtube.com/watch?v=WoVoIhgutMU) haben die Datei nie erwähnt. Ich habe auch eine Antwort auf irgendeinem Forum gesehen, die nur gesagt, dass ich den PC neustarten soll, also habe ich es getan und nichts hat sich geändert.
Kann mir jemand sagen warum ich mein Programm nicht ausführen kann?
Hier ist auch das Test Programm, was ich von einem Tutorial habe falls es wichtig ist:
#include <SFML/Graphics.hpp>
int main() {
sf::RenderWindow window(sf::VideoMode(800, 800), "Window Title");
sf::CircleShape shape(200.f, 100);
shape.setFillColor(sf::Color(204, 77, 5));
shape.setPosition(200, 200);
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
} window.clear(sf::Color(18, 33, 43));
window.draw(shape);
window.display();
}
return 0;
}
1 Antwort
1) Öffne den Visual Studio Installer und schau nach, ob du den Workload Desktopentwicklung mit C++ mitsamt dem Windows SDK installiert hast. Letzteres beinhaltet unter anderem die kernel32.lib.
2) Öffne in Visual Studio die Projekteigenschaften (Rechtsklick auf Projektknoten im Solution Explorer > Properties) und schau dort unter Configuration Properties > VC++ Directories, ob der Eintrag
$(WindowsSDK_IncludePath);
im Feld Include Directories mit eingetragen ist. Für die Library Directories sollte es einen ähnlichen Eintrag geben:
$(WindowsSDK_LibraryPath_<ISA>)
Je nach ausgewählter Plattform mit x64, x86, o.ä. am Ende.
Ich habe jetzt alles Überprüft und Ich habe Desktop Entwicklung mit C++ installiert und die Befehle waren da auch schon drin.