C++ ImageMagick与另一个项目的静态编译会导致链接器错误

C++ ImageMagick与另一个项目的静态编译会导致链接器错误,c++,imagemagick,static-linking,magick++,C++,Imagemagick,Static Linking,Magick++,我下载了ImageMagick源代码,编译了向导以创建用于静态链接的VisualStudio解决方案,并将静态库Magick++项目包含在我的示例项目中(下面的代码)。我还添加了对该项目的依赖项,并在解决方案中包含了.lib文件,没有任何帮助 #include <Magick++.h> int main() { Magick::Image image; bool test = image.isValid(); return 0; } #包括 int mai

我下载了ImageMagick源代码,编译了向导以创建用于静态链接的VisualStudio解决方案,并将静态库Magick++项目包含在我的示例项目中(下面的代码)。我还添加了对该项目的依赖项,并在解决方案中包含了.lib文件,没有任何帮助

#include <Magick++.h>

int main()
{
    Magick::Image image;
    bool test = image.isValid();
    return 0;
}
#包括
int main()
{
Magick::图像;
bool test=image.isValid();
返回0;
}
这会导致多个链接器错误,例如:

未解析的外部符号“\uuuu declspec(dllimport)public:virtual\uuu thiscall Magick::Image::~Image(void)”(\uuuuuu imp??1Image@Magick@@UAE@XZ)在函数_main中引用

为什么它找不到实现


我使用的是Visual Studio 2010 Beta 2。

问题可能是您使用的编译器与编译库时使用的编译器不同。由于您的编译器相当新,很可能它使用了不同的名称损坏,并且在库中找不到方法签名。

此错误很奇怪-编译器正在从DLL(u declspec(dllimport))中查找函数。确实使用了正确的头文件吗?

链接ImageMagick静态库的答案是确保链接所有相关的静态库

编译ImageMagick静态库的解决方案后,转到“VisualMagick”文件夹(在ImageMagick克隆存储库中),然后转到“lib”文件夹,在那里您将看到所有用于调试和发布的_DB_uu.lib和_RL_u.lib文件

对于发行版和调试版,您需要在“附加依赖项”部分包含这些名称

您还必须确保在发行版和调试版的“附加库目录”中都有库文件夹路径


另一个关键方面是确保库是由与您自己的应用程序相同的平台体系结构的相同编译器构建的。。(WIN32或x64)。

我遇到了一个非常类似的问题。