如何将Imagemagick库链接到Qt(windows)

时间:2010-11-10 04:48:23

标签: c++ qt imagemagick

我用mac开发了一个应用程序,现在已经有一个月了,我试图在Windows上将Qt与ImageMagick联系起来。

我无法找到需要链接到Qt的文件和Imagemagick库的版本,以使我的应用程序在Windows上运行。

我尝试了here

中的大多数库

这是我在Mac上开发时唯一添加到.pro文件中的东西

INCLUDEPATH += . /opt/local/include/ImageMagick
LIBS += -L/opt/local/lib -lMagick++

当我将此添加到我的.pro

INCLUDEPATH += C:/im6/include/ImageMagick
LIBS += C:/im6/lib/libMagickWand.a
LIBS += C:/im6/lib/libMagick++.a
LIBS += C:/im6/lib/libMagickCore.a
C:/im6/lib/libMagick++.a

我得到10.000 + simmilar错误:

(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.6-0/Magick++/lib/Image.cpp:4157: undefined reference to `__gxx_personality_sj0'

    C:/im6/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.6-0/Magick++/lib/Image.cpp:4157: undefined reference to `_Unwind_SjLj_Register'

    C:/im6/lib/libMagick++.a(Image.o):C:\msys\1.0\home\cristy\ImageMagick-6.6.6-0/Magick++/lib/Image.cpp:4178: undefined reference to `_Unwind_SjLj_Unregister'

要查看更多错误,请检查this

有没有人尝试在Windows上使用qt构建和部署ImageMagick应用程序? 构建时需要链接哪些文件以及部署时需要哪些文件?

4 个答案:

答案 0 :(得分:2)

  1. 错误消息告诉我你 使用mingw(使用qtcreator)。您的 库可能不适用于此 编译器。你需要一个mingw版本 图书馆,可能是名字 libmagick.a。

  2. LIBS + = -L $$ quote(c:/ Program Files / ImageMagick-6.6.5-Q16 / lib)-lmagick (请参阅有关qmake Project Files

  3. 的文档

答案 1 :(得分:0)

请去获取ImageMagick源包。

我无法直接指示如何使用Qt Creator的MinGW,但基本上如下。我更喜欢使用Qt的二进制分布附带的qtvars.bat来设置环境。

  1. 打开Windows cmd
  2. 在其他路径之前将PATH设置为/ path / to / mingw / bin和/ path / to / qt / bin
  3. 转到已解压缩ImageMagick源的目录
  4. 阅读README,INSTALL等编译ImageMagick(很可能只是./configure; mingw32-make,但永远不会确定)
  5. 使用LIBS + = -L $$ quote(/ path / to / imagemagick / lib / dir)-lmagick编辑.pro文件。 lib可以在bin目录中或在lib目录中。有关更多信息,请参阅hmuelner的答案。
  6. 此时,配置应准备就绪。在Qt Creator上编译应该可以工作,但你也可以使用这个cmd窗口来编译程序:转到程序目录,运行“qmake”和“mingw32-make”。

答案 2 :(得分:0)

您无法链接到使用MSVC构建的ImageMagick ++库,因为mingw和MSVC DLL与C ++库不兼容。您无法将MSVC构建的C ++库链接到mingw项目,反之亦然。仅限C的库工作正常。另外,根据to this fortum thread,使用针对具有当前mingw版本的旧mingw版本的构建不会随着异常处理的改变而工作(因为你得到的错误多于此,我不希望这是唯一的问题,尽管)。如果你的mingw版本没有二进制包(我在imagemagick网站上没有看到任何内容),你唯一的选择是使用源包,正如Smar建议的那样。

另一个选择当然是安装Visual Studio,下载Qt for MSVC并使用MSVC构建项目。

答案 3 :(得分:0)

我发现minGW工具集在Windows世界中被视为“继子”。我知道这对你的特殊情况没有帮助,但是在尝试将Qt与minGW一起使用时,我们遇到了第三方库的许多问题。总是有额外的步骤,或者我们不得不弄清楚或调整的不存在的构建指令。

一旦我们切换到MSVC版本,所有这些问题就消失了。请注意,这并不意味着您必须使用Visual Studio(您仍然可以使用Qt创建者),它只是意味着正在使用Visual Studio编译器。您可以使用Platform SDK免费获得编译器。如果这是一个选项,你现在可以通过切换来节省很多痛苦。这是不幸的,但这只是目前的现状,至少我们发现了。