Linking to external software system in Qt project ( libraries , dll on Windows ) GraphicsMagick
Does anybody know how to link to GraphicsMagick / ImageMagick:
libraries on Windows in Qt project :
and after installation there is a folder that contains multiple .dlls in it on Windows.
I need next includes will be recognized by mingw :
- #include <GraphicsMagick/Magick++/Image.h>
- #include <GraphicsMagick/Magick++/STL.h>
but after I try in .pro file to put next line:
- LIBS += -lMagick++ -lWand -lMagick
I’ve got next compilation problem ( mingw ):
- ..\main_control_1\/mainwindow.h:58:43: error: GraphicsMagick/Magick++/Image.h: No such file or directory
- ..\main_control_1\/mainwindow.h:59:41: error: GraphicsMagick/Magick++/STL.h: No such file or directory
On Linux I’ve succeed to link to the GraphicsMagick using pkgconfig.
I’ve looked through several sources such that:
Similar discussion at StackOverflow [stackoverflow.com]
and documentation/manuals but can’t find out / understand what rows to put to Qt .pro files so the project will compile on Windows ( compiling system is mingw ).
What lines to enter in .pro file so that the linker will find all needed GraphicsMagick/Image Magick headers and will compile ?
Thanks in advance.
Hi.I hope it should be linked as usual , but now here the facts I get when :
after installing ImageMagick from Windows installer:
in .pro file I’ve added:
- INCLUDEPATH += C:\Program Files\ImageMagick-6.7.3-Q8\include \
- C:\Program Files\ImageMagick-6.7.3-Q8\include\magick \
- C:\Program Files\ImageMagick-6.7.3-Q8\include\Magick++ \
- C:\Program Files\ImageMagick-6.7.3-Q8\include\wand
- LIBS += C:\Program Files\ImageMagick-6.7.3-Q8\*.dll
and including in Qt project by providing pathes to headers : .h files :
- #include "C:\Program Files\ImageMagick-6.7.3-Q8\include\Magick++\Image.h"
- #include "C:\Program Files\ImageMagick-6.7.3-Q8\include\Magick++\STL.h"
but part of directories from pathes above to desired to be included headers can’t “be seen” ( can’t be found ) Magick++ for example.
Yet not solved. I need perhaps somebody reliable and understand very well in connecting externals software modules to Qt project that have time and willing to help then if he has patience and time and we begin to cooperate we should create Qt project that uses 2 – 3 large external software systems on Windows , one can get upon successfull completion experience and perhaps some fee from me ( unfortunatelly I have very limited budgets last time ). Thanks.
If you set INCLUDEPATH in the .pro, you do not need the full path in your own headers.
So, you just need to add
- #include <Magick++>
And you must not link against the DLLs, but against the corresponding stub libs:
- # check the path
- LIBS += -L"C:\Program Files\ImageMagick-6.7.3-Q8\libs"
- # if you're on MinGW use this
- LIBS += -lGraphicsMagick++ -lGraphicsMagickWand -lGraphicsMagick
- # or if you're on visual studio use this
- LIBS += -lCORE_RL_Magick++_ -lCORE_RL_Wand_ -lCORE_RL_Magick_
If you have paths containing spaces, you need to enclose those in quotes!
- INCLUDEPATH += "C:\Program Files\ImageMagick-6.7.3-Q8\include"
I am trying to port a linux Qt application to Widows, using mingw. The problem is with imagemagick libs. Have put the magick libs and headers (magick mingw version) in place. They are found by mingw (gcc), but I am getting many ‘undefined references’, caused by not finding image.cpp somewhere in the (mingw) msys system. I am not an mingw expert, but it’s clear that Qt is not using msys.
Maybe Qt should warn about using mingw. I have been googling and trying for days now and I see many mailings from people getting stuck here, and none of the solutions work.
Thanks for the reply.
I’ll give you the data of the latest attempt.
- INCLUDEPATH += C:/QtSDK/mingw/ImageMagick-6.6.9/include/ImageMagick
- LIBS += C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagickCore.a C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagick++.a C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagickWand.a
- QMAKE_CXXFLAGS += -I../../include
- TARGET.EPOCSTACKSIZE = 64000000
I put the lib (magick mingw build) including .a .la etc in correct dirs.
Got errors about not finding Image.cpp on the path below.
So I created this dir: C:\msys\1.0\home\cristy\
and put the magick source tree in the there. Image.cpp is now found.
Few thousand errors:
- C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.9-2/Magick++/lib/Image.cpp:4281: undefined reference to `MagickCoreGenesis'
- C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.9-2/Magick++/lib/Image.cpp:4242: undefined reference to `GetExceptionInfo'
- C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.9-2/Magick++/lib/Image.cpp:4245: undefined reference to `SetImageRegistry'
- C:/QtSDK/mingw/ImageMagick-6.6.9/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.9-2/Magick++/lib/Image.cpp:4247: undefined reference to `DestroyExceptionInfo'
So, nothing wrong with Qt, but mingw is acting strange. If you google you’ll see that the same problems apply to other libraries as well.
[EDIT: code formatting, Volker]
Hm, strange. Seems to be much more an ImageMagick issue. I would advice to ask in a special forum over there to check out what actually needs to be linked (or change on installing etc.). The libs and include paths then can be easily adapted in the .pro file. Feel free to come back here if you need some advice on how to include the settings into the qmake project file.