I tried to link to the SFML library with a QTCreator project under windows. And it didn't work.
QTCreator doesn't allow me to select .dll files, the wizard only accepts .lib.
So this is what i did:
- I downloaded SFML 1.6 for MinGW and put it in the project folder under /lib.
- I have MinGW installed and selected it as my compiler/builder in the project settings.
- I tried building the program with both writing down the relative path to the dll, and by using -L(path to /lib) -lmylib... with the first one, it said it didn't find sfml-window.dll, with the second one, it didn't find sfml-graphics.dll when trying to run the exe.
I am guessing, i am doing something very simple very wrong. Here are the relevant files:
project file
[SPOILER]
TEMPLATE = app
CONFIG += console
CONFIG += debug_and_release
#QT += opengl
SOURCES += main.cpp \
sources/nestedtest/myclass.cpp
HEADERS += \
sources/nestedtest/myclass.h
win32-g++ {
CONFIG(release, debug) {
TARGET = tryout_release
} else {
TARGET = tryout_debug
}
INCLUDEPATH += $$PWD/lib/SFML-1.6/include
DEPENDPATH += $$PWD/lib/SFML-1.6/include
LIBS += -L$$PWD/lib/SFML-1.6/lib/ -lsfml-graphics -lsfml-window -lsfml-audio -lsfml-system
#LIBS += $$PWD/lib/SFML-1.6/lib/sfml-graphics.dll
#LIBS += $$PWD/lib/SFML-1.6/lib/sfml-window.dll
#LIBS += $$PWD/lib/SFML-1.6/lib/sfml-audio.dll
#LIBS += $$PWD/lib/SFML-1.6/lib/sfml-system.dll
}
[/SPOILER]
main.cpp
[SPOILER]
#include <iostream>
#include <SFML/Graphics.hpp>
#include <QDebug>
using namespace std;
// Creates the RenderWindow with a size of 800*600 and 32 bits colordepth as
// a global variable
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "Jump & Run Tutorial");
// The event that we use to catch the closing of the game
sf::Event Event;
bool init() {
// return that initialization was successful
return true;
}
void update() {
// look for events
while (App.GetEvent(Event))
{
// if the user did close the window (by pressing the x button of the
// window, e.g.), close the game
if (Event.Type == sf::Event::Closed) {
App.Close();
}
}
}
void draw() {
// Clear the graphics window
App.Clear();
// Everything that needs to be drawn will be here later
// Actualize the display
App.Display();
// Look the the console window to see this output
//qDebug()<<"Just to see qDebug in action.";
}
int main()
{
bool initSuccess=init();
// if an error occured during init() close the game
if (!initSuccess){
App.Close();
}
// gameloop till game is closed
while (App.IsOpened())
{
update();
draw();
}
return EXIT_SUCCESS;
}
[/SPOILER]