我应该将哪些文件复制到我的项目中以使用 ImageMagick?或如何在 Windows 上使用 MinGW 编译 ImageMagick?

Posted

技术标签:

【中文标题】我应该将哪些文件复制到我的项目中以使用 ImageMagick?或如何在 Windows 上使用 MinGW 编译 ImageMagick?【英文标题】:Which files shoud I copy to my project to use ImageMagick? or How to compile ImageMagick with MinGW on Windows? 【发布时间】:2020-09-10 11:24:27 【问题描述】:

我的问题可能看起来有点简单,因为我是 QT 和 C++ 的新手,但我为此苦苦挣扎了一天,所以我决定向某人寻求帮助。我正在尝试在我的 QT-MinGW C++ 项目中使用 ImageMagick 库在不同的图像类型之间进行转换。我从here 下载了源代码并按照描述的步骤构建它:

./configure
make
make install

现在我可以在命令行中使用convertmagick等命令,但是我应该如何将库添加到我的QT项目中呢?没有.dll\include 文件夹。我应该将哪些文件添加到我的项目中?库文件在哪里?

注意:我想在 Windows 环境中使用该库。我正在使用 Windows Subsystem for Linux 来编译它。

注意 2:我尝试在 Windows 上使用 MinGW MSYS 进行编译,但收到了数千条警告和错误:c:\ImageMagic/MagickCore/nt-base.c:2774: undefined reference to SetDllDirectoryW' collect2.exe: error: ld returned 1 exit status make[1]: *** [MagickCore/libMagickCore-7.Q16HDRI.la] Error 1

急需帮助。

【问题讨论】:

我从未使用过 imagemagic,但该网站似乎建议使用 magick++ 库。 imagemagick.org/script/magick++.php 如果您使用 WSL,我假设您的库是 .so 或 .a 文件,并且与您使用的 linux 发行版兼容。 @AdomasBaliuka 事实上,Magick++ 包含在 ImageMagick 源代码中。但我不知道如何将它包含在我的项目中。 @drescherjm `ImageMagick-7.0.10-29\Magick++\lib\.libs` 中有一个libMagick++-7.Q16HDRI.a 文件,但它是主库文件吗?我应该使用哪些头文件? .a文件是一个静态库,可以用于你的linux开发。 【参考方案1】:

如果您使用 MinGW 构建 ImageMagick 作为静态库和共享库,您应该在 lib 文件夹中有这些 .a 文件:

libMagick++-7.Q16HDRI.a libMagick++-7.Q16HDRI.dll.a libMagickCore-7.Q16HDRI.a libMagickCore-7.Q16HDRI.dll.a libMagickWand-7.Q16HDRI.a libMagickWand-7.Q16HDRI.dll.a

以及 bin 文件夹中的这些 .dll 文件:

libMagick++-7.Q16HDRI-4.dll libMagickCore-7.Q16HDRI-7.dll libMagickWand-7.Q16HDRI-7.dll

如果您没有 .dll.a.dll 文件,那么您就没有共享构建。

如果您自己构建了 ImageMagick 并且未构建共享库,则可能是因为依赖项也缺少它们的共享库。

【讨论】:

我使用 MinGW 时失败了。你怎么能建造它?你可以添加你的编译器版本吗?你没有收到任何错误吗?请描述程序。 我使用静态库和共享库构建了所有依赖项,然后构建了 ImageMagick。您可以想象这是一项艰巨的任务,我无法简单地描述。 当我尝试构建它时,我从 here 下载它并在 MSYS 上使用 ./configuremake。它失败了,请在你的答案中添加一些细节。 我使用这个源文件:imagemagick.org/download/ImageMagick-7.0.10-29.tar.xz,我这样配置:./configure --prefix=$INSTALLPREFIX --build=$BUILDPLATFORM --host=$RUNPLATFORM --enable-zero-configuration --with-modules --without-x --with-gslib --without-perl --disable-openmp --enable-hdri --without-wmf CFLAGS="-fcommon" LDFLAGS="-Wl,--as-needed -lws2_32 -Wl,--enable-auto-import"

以上是关于我应该将哪些文件复制到我的项目中以使用 ImageMagick?或如何在 Windows 上使用 MinGW 编译 ImageMagick?的主要内容,如果未能解决你的问题,请参考以下文章

从 git 存储库中排除 ios 项目的哪些文件? [复制]

自定义字体不起作用

我应该将引导文件夹复制到每个新项目吗?

我需要将哪些文件链接到我的 xcode 项目(内置游戏制作器)才能使其工作?

上传的安全威胁

将 jar 文件添加到我的 Xamarin 项目