Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows上使用MinGw链接ImageMagick库时出现问题_Windows_Linker_Imagemagick_Mingw - Fatal编程技术网

在Windows上使用MinGw链接ImageMagick库时出现问题

在Windows上使用MinGw链接ImageMagick库时出现问题,windows,linker,imagemagick,mingw,Windows,Linker,Imagemagick,Mingw,我最近开始使用QtCreator,它似乎工作得很好。我在OSX上构建的一个示例应用程序使用该库 没有问题-一切正常。我从源代码构建了ImageMagick库 现在我转到Windows端,链接问题开始了。 Windows上的Qt Creator使用MinGW而不是Microsoft的编译器,但ImageMagick库是用VC编译的 简言之,我无法使用gcc将Windows上的预构建库链接到我的Qt Creator项目 这意味着我必须使用MinGw重新编译ImageMagick库,但我以前从未在Wi

我最近开始使用QtCreator,它似乎工作得很好。我在OSX上构建的一个示例应用程序使用该库

没有问题-一切正常。我从源代码构建了ImageMagick库

现在我转到Windows端,链接问题开始了。 Windows上的Qt Creator使用MinGW而不是Microsoft的编译器,但ImageMagick库是用VC编译的

简言之,我无法使用gcc将Windows上的预构建库链接到我的Qt Creator项目

这意味着我必须使用MinGw重新编译ImageMagick库,但我以前从未在Windows上使用过GCC。 如何运行/配置

ImageMagick附带windows源代码,但它们都是为VisualStudio量身定制的

有人能帮忙吗?有人已经将ImageMagick库链接到Windows上的Qt Creator程序中了吗

谢谢


Dj.

您需要链接的不仅仅是libMagick++.a。首先是libMagickCore.a,可能还有libMagickWand.a,还有一些依赖项,它们取决于编译IM的方式,例如-lz-ltiff-ljpeg-lpng12-lgdi32-lpthread-lfreetype


Matthew

有人指出MSYS是windows上的unix shell,类似于Cygwin,我现在设法使用与Qt Creator使用的编译器相同的编译器编译该库。链接器现在找到了库,但仍然不好。我得到以下信息。。。mingw32 make:离开目录c:/Technology Evaluations/Qt/MagickTest'lib/libMagick++.aImage.o:在函数ZN6Magick5Image12channelDepthEN10MagickCore11ChannelTypeE:c:/Libraries/ImageMagick-6.5.4-2/Magick++/lib/Image.cpp:540:未定义的对‘\u imp\u GetExceptionInfo’的引用。。。对于其他函数,这种情况会持续一段时间……Matthew,例如,我可以在OS X上编译相同的源代码,并通过在libMagick中链接来链接它。libMagick本身在构建时链接这些其他依赖项。因此,再次链接它们是没有意义的,因为在OSX中显然就是这样,我放弃了,因为它不值得麻烦,而且开发人员似乎不关心在Windows上编译。太糟糕了,因为图书馆看起来很有前途。Qt本身现在似乎有足够的图像支持来完成我的工作。谢谢。链接在OSX和Windows上的工作方式不同。实际上我对OSX了解不多,但假设它和linux一样,它可以在运行时解析符号定义。在Windows上,它们都必须在编译时定义。因此,您需要链接所有库。>它可以在运行时解析符号定义。我们谈论的是静态库,而不是动态库。如果静态链接所有内容,则运行时不会发生任何事情。此外,如果问题仅出现在运行时,应用程序将正常编译,然后在运行时崩溃(例如在windows上),您将编译它,但如果缺少dll,应用程序将无法启动。>链接在OS X和Windows上的工作方式不同它有何不同?如果使用相同的编译器,我不知道有什么不同?你能给我更多的信息吗?你确定你在使用Mac OS X上的静态库吗?根据我的经验,在linux上进行链接时,只需指定一个库,它就可以链接其余的库。但是,在Windows上,您需要显式链接每个静态库。我应该说Windows和*nix上的可执行文件格式不同,而不是链接的工作方式不同。但本质上是一个导致另一个,因为链接器必须为Windows创建完全不同的文件格式。