Followers 0

# QMake and SFML linking under windows

## 3 posts in this topic

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:[list]
[*]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.
[/list]
I am guessing, i am doing something very simple very wrong. Here are the relevant files:

project file
[SPOILER]
[CODE]

TEMPLATE = app
CONFIG += console
CONFIG += debug_and_release
#QT += opengl
SOURCES += main.cpp \
sources/nestedtest/myclass.cpp
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
}
[/CODE]
[/SPOILER]

main.cpp
[SPOILER]
[CODE]
#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;
}
[/CODE]
[/SPOILER]
0

##### Share on other sites
You don't link a DDL, you link the library file corresponding to the DDL. Did you read the instruction on SFML website?

[url="http://www.sfml-dev.org/tutorials/1.6/start-vc.php"]http://www.sfml-dev.....6/start-vc.php[/url]

Edit: well, the link I provided is for VS, but the idea is the same... Edited by Faelenor
0

##### Share on other sites
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. Edited by Bluefirehawk
0

##### Share on other sites
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?
0

## Create an account

Register a new account