使用 ImageMagicK 在 vc++ 中出现不明确的错误

ambiguous error in vc++ with ImageMagicK

我有一个问题。 当我在 vs2010 c++ 表单项目中使用 ImageMagicK 库进行编译时。

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

1>ex3.cpp(22):错误 C2872:'Image':符号不明确

1> 可以是 'c:\program files\imagemagick-6.8.6-q16\include\Magick++/Image.h(55) : Magick::Image'

1> 或 'c:\program files\reference assemblies\microsoft\framework.netframework\v4.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;
}

在对网络视觉进行研究之后。 vc++ 似乎不是 imagemagick 软件套件的选择。没有看到 vc++ 作为接口

这是 using namespace xxx 引起冲突的示例。在线

Image master;

编译器无法判断您是指 Magick::Image 还是 .NET Image

你可以select你可能需要的那个,明确地写

Magick::Image master;

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

正如 Victor Torres 在他的回答中所说,不确定 ImageMagick 是否完全适用于托管 C++,但这是另一个问题。