6

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

#include <Magick++.h>

int main()
{
    Magick::Image image;
    bool test = image.isValid();
    return 0;
}

这会产生几个链接器错误,例如:

未解析的外部符号“__declspec(dllimport) public: virtual __thiscall Magick::Image::~Image(void)” (__imp_??1Image@Magick@@UAE@XZ) 在函数 _main 中引用

为什么找不到实现?

我正在使用 Visual Studio 2010 Beta 2。

4

3 回答 3

2

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

于 2010-03-28T17:32:58.057 回答
1

链接 ImageMagick 静态库的答案是确保您也链接所有依赖的静态库!

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

您需要在发布和调试的“附加依赖项”部分中包含这些名称。

您还必须确保在“附加库目录”中具有用于发布和调试的库文件夹路径。

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

于 2020-01-26T19:36:29.493 回答
0

这个错误很奇怪 - 编译器正在从 DLL (__declspec(dllimport)) 中寻找一个函数。你确定你使用的是正确的头文件吗?

于 2010-06-19T16:22:48.600 回答