Objective c 在MonoTouch中包括ImageMagick

Objective c 在MonoTouch中包括ImageMagick,objective-c,mono,xamarin.ios,imagemagick,Objective C,Mono,Xamarin.ios,Imagemagick,在MonoTouch中使用ImageMagick的最佳方式是什么 添加ImageMagickNET库似乎会在运行时产生错误,例如: 方法 '模块:CrtImplementationDetails.dodl语言支持验证 ()在汇编中 “/ImageMagickNET/bin/ReleaseQ8/ImageMagickNET.dll” 包含无法删除的本机代码 在这个平台上由Mono执行。这个 程序集可能是使用 C++/CLI 有一些特定于iPhone的二进制文件可用,我想我必须链接整个库,如下所述:

在MonoTouch中使用ImageMagick的最佳方式是什么

添加ImageMagickNET库似乎会在运行时产生错误,例如:

方法 '模块:CrtImplementationDetails.dodl语言支持验证 ()在汇编中 “/ImageMagickNET/bin/ReleaseQ8/ImageMagickNET.dll” 包含无法删除的本机代码 在这个平台上由Mono执行。这个 程序集可能是使用 C++/CLI

有一些特定于iPhone的二进制文件可用,我想我必须链接整个库,如下所述:

?


感谢您的帮助:)

该错误为您解答了问题:

在程序集中,“/ImageMagickNET/bin/ReleaseQ8/ImageMagickNET.dll”包含的本机代码 Mono无法在此服务器上执行 站台

一个快速的谷歌告诉我 您可能正在使用所谓的“包装器”


这意味着imagemagick代码本身仍然是非.NET imagemagick,它永远不会在iPhone上运行。

首先,为什么这不起作用

第二,你能做些什么

不起作用的原因:您使用的库是使用C++/CLI编译器针对Microsoft库编译的

您在MonoTouch中使用的所有托管代码都必须使用MonoTouch的程序集和工具进行编译,因此上述方法不起作用,原因有两个:(a)Mono缺少C++/CLI编译器;(b)即使存在,您也必须引用Mono组件

对此您可以做些什么:您可以使用Apple的C编译器构建ImageMagic,然后将生成的代码链接到您的应用程序中:

然后,对于要访问的每个ImageMagick方法,需要使用p/Invoke对其进行包装,此处提供了一个指南: