在vc++中使用ImageMagicK的模糊错误

ambiguous error in vc++ with ImageMagicK

本文关键字:模糊 错误 ImageMagicK vc++      更新时间:2023-10-16

我有一个问题。当我用ImageMagicK库编译vs2010 c++ form项目时。

我有一些这样的错误代码。

1>ex3.cpp(22): error C2872: 'Image': ambiguous symbol

1>可以是"c:program filesimagemagick-6.8.6-q16include magick++/Image.h(55): Magick::Image"

1>或'c:program filesreference assembliesmicrosoftframework.netframeworkv4.0 System . Drawing .dll: System::Drawing::Image'

文件看起来像这样:

// ex3.cpp : main project file.
#include "stdafx.h"
#include "Form1.h"
#include <Magick++.h>

using namespace ex3;
using namespace Magick; 
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 
    // Create the main window and run it
    Application::Run(gcnew Form1());

    InitializeMagick(*argv);
    Image master;
    master.read("C:₩₩abc.jpg");
    master.addNoise(ImpulseNoise);
    master.write("C:₩₩abc_magic.jpg");
    return 0;
}

这是using namespace xxx引起冲突的一个例子。行

Image master;

编译器不能告诉你是指Magick::Image还是。net Image

您可以通过显式选择您可能需要的内容并写入

Magick::Image master;

这正是首先发明名称空间的原因,也是为什么强烈建议而不是using namespace xxx添加到文件中,只是为了节省一些输入。

就像Victor Torres在他的回答中所说的,ImageMagick是否在Managed c++中工作是不确定的,但这是另一个问题。

经过对网页视觉的研究。vc++似乎不是imagemagick软件套件的一个选择。没有看到vc++作为接口