[英]How to Link Imagemagick library to Qt(windows)
我已经用 mac 开发了一个应用程序,现在一个月了,我试图将 Qt 与 Windows 上的 ImageMagick 链接起来。
我只是找不到需要链接到 Qt 以使我的应用程序在 Windows 上运行的文件和 Imagemagick 库的版本。
我已经尝试了这里的大部分库
这是我在 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 + 类似的错误:
(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'
有关更多错误,请检查此
有没有人尝试在 Windows 上使用 qt 构建和部署 ImageMagick 应用程序? 构建时需要链接哪些文件,部署时需要链接哪些文件?
错误消息告诉我您使用了 mingw(使用 qtcreator)。 您的库可能不适用于此编译器。 您需要一个 mingw 版本的库,可能名为 libmagick.a。
LIBS += -L$$quote(c:/Program Files/ImageMagick-6.6.5-Q16/lib) -lmagick(请参阅有关qmake 项目文件的文档
请去获取 ImageMagick 源码包。
我无法直接说明如何使用 Qt Creator 的 MinGW,但基本上遵循。 我更喜欢使用 Qt 二进制发行版附带的 qtvars.bat 来设置环境。
此时,配置应该准备好了。 在 Qt Creator 上编译应该可以工作,但您也可以使用这个 cmd windows 来编译您的程序:转到程序目录,运行“qmake”和“mingw32-make”。
您不能链接到使用 MSVC 构建的 ImageMagick++ 库,因为 mingw 和 MSVC DLL 与 C++ 库不兼容。 您不能将 MSVC 构建的 C++ 库链接到 mingw 项目,反之亦然。 C-only 库工作正常。 此外,根据这个fortum线程,使用当前mingw版本的旧mingw版本构建不起作用,因为异常处理发生了变化(因为你得到的错误比这更多,但我不希望这是唯一的问题) . 如果您的 mingw 版本没有二进制包(而且我在 imagemagick 网站上没有看到任何二进制包),您唯一的选择是使用源包,正如 Smar 建议的那样。
当然,另一种选择是安装 Visual Studio,下载 Qt for MSVC 并使用 MSVC 构建您的项目。
我发现 minGW 工具集在 Windows 世界中被视为“继子”。 我知道这对您的特定情况没有帮助,但是在尝试将 Qt 与 minGW 一起使用时,我们在第三方库方面遇到了很多问题。 总是有额外的步骤,或者我们必须弄清楚或调整不存在的构建指令。
一旦我们切换到 MSVC 版本,所有这些问题都消失了。 请注意,这并不意味着您必须使用 Visual Studio(您仍然可以使用 Qt creator),这仅意味着正在使用 Visual Studio 编译器。 您可以使用 Platform SDK 免费获得编译器。 如果这是一个选项,您现在可以通过切换来为自己省去很多痛苦。 不幸的是,这只是目前的现状,至少正如我们发现的那样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.