我用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应用程序? 构建时需要链接哪些文件以及部署时需要哪些文件?
答案 0 :(得分:2)
错误消息告诉我你 使用mingw(使用qtcreator)。您的 库可能不适用于此 编译器。你需要一个mingw版本 图书馆,可能是名字 libmagick.a。
LIBS + = -L $$ quote(c:/ Program Files / ImageMagick-6.6.5-Q16 / lib)-lmagick (请参阅有关qmake Project Files
答案 1 :(得分:0)
请去获取ImageMagick源包。
我无法直接指示如何使用Qt Creator的MinGW,但基本上如下。我更喜欢使用Qt的二进制分布附带的qtvars.bat来设置环境。
此时,配置应准备就绪。在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免费获得编译器。如果这是一个选项,你现在可以通过切换来节省很多痛苦。这是不幸的,但这只是目前的现状,至少我们发现了。