我在Windows x32计算机上将Magick ++链接到Qt项目时遇到问题。 在linux上它工作正常(我有源文件并使用make和make install)
这是
的.pro文件代码unix {
LIBS += -L/usr/local/lib \
-lMagick++-6.Q16 -lMagickWand-6.Q16 -lMagickCore-6.Q16
}
这里是使用magick ++将pdf转换为图像的方法:
#include <Magick++.h>
#include <QImage>
#include <QDebug>
using namespace std;
QImage pdfToImage(const QString &pathToFile, const QString &targetImageType)
{
try
{
Magick::Image img;
Magick::Blob blob;
img.read(pathToFile.toStdString());
img.magick(targetImageType.toStdString());
img.write(&blob);
const QByteArray imageData((char*)(blob.data()),blob.length());
QImage image;
image.loadFromData(imageData);
return image;
}
catch (Magick::Warning &warning)
{
qDebug() << warning.what();
return QImage();
}
}
int main(int argc, char *argv[])
{
pdfToImage("filename", "png");
return 0;
}
这是我的.pro文件:
QT += core widgets
TARGET = magickcpp_test_include
TEMPLATE = app
SOURCES += main.cpp
win32: LIBS += -L$$PWD/libs/ImageMagick-6.8.5/win32/ -llibMagick++-6.Q16.dll
INCLUDEPATH += $$PWD/libs/ImageMagick-6.8.5/include/ImageMagick-6
DEPENDPATH += $$PWD/libs/ImageMagick-6.8.5/win32
win32: LIBS += -L$$PWD/libs/ImageMagick-6.8.5/win32/ -llibMagickCore-6.Q16.dll
INCLUDEPATH += $$PWD/libs/ImageMagick-6.8.5/include/ImageMagick-6
DEPENDPATH += $$PWD/libs/ImageMagick-6.8.5/win32
win32: LIBS += -L$$PWD/libs/ImageMagick-6.8.5/win32/ -llibMagickWand-6.Q16.dll
INCLUDEPATH += $$PWD/libs/ImageMagick-6.8.5/include/ImageMagick-6
DEPENDPATH += $$PWD/libs/ImageMagick-6.8.5/win32
输出:
C:\Users\vadixem\qt_projects\magickpp_test_include\main.cpp:13: error: undefined reference to `Magick::Image::read(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
C:\Users\vadixem\qt_projects\magickpp_test_include\main.cpp:15: error: undefined reference to `Magick::Image::magick(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2.exe:-1: error: error: ld returned 1 exit status
我很长时间都在寻找答案。请帮忙。提前致谢