QMake and SFML linking under windows

Started by
2 comments, last by Faelenor 11 years, 6 months ago
Hi guys

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]
Project: Project
Setting fire to these damn cows one entry at a time!
Advertisement
You don't link a DDL, you link the library file corresponding to the DDL. Did you read the instruction on SFML website?

http://www.sfml-dev.....6/start-vc.php

Edit: well, the link I provided is for VS, but the idea is the same...
I don't use visual studio, I use MinGW. There are no .lib files (all i've found about those suggested they are proprietary VS libraries).

I read the instructions, I can compile and link samples via GCC, but I want to do it with QMake. I haven't found a satisfying tutorial for QMake, the only thing I've found was to put the dlls in the windows system folder, which i would like to avoid.

E:The strange thing is i can compile, the linker too finishes without an error. I am guessing the exe doesn't know where to find the dll's.
Project: Project
Setting fire to these damn cows one entry at a time!
In that case, you just have to copy the DDL in your .exe folder? Or make sure the startup directory is the one containing the DDL?

This topic is closed to new replies.

Advertisement