在MonoTouch中包含ImageMagick

时间:2011-04-13 00:20:26

标签: objective-c mono xamarin.ios imagemagick

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

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

  

方法   “模块:CrtImplementationDetails.DoDllLanguageSupportValidation   ()'在集会中   '/ImageMagickNET/bin/ReleaseQ8/ImageMagickNET.dll'   包含不能的本机代码   由Mono在这个平台上执行。该   装配可能是使用   C ++ / CLI。

有特定于iPhone的二进制文件,我想我必须按照这里描述的方式链接整个库:

http://monotouch.net/Documentation/Binding_New_Objective-C_Types

感谢您的帮助:)

2 个答案:

答案 0 :(得分:2)

首先,为什么这不起作用。

其次,你可以做些什么。

为什么它不起作用:您正在使用的库是使用C ++ / CLI编译器针对Microsoft库编译的。

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

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

http://monotouch.net/Documentation/Linking_Native_Libraries

然后,对于您要访问的每个ImageMagick方法,您需要使用P / Invoke进行包装,这里有一个指南:

http://www.mono-project.com/Interop_with_Native_Libraries

答案 1 :(得分:0)

该错误为您解答了问题:

  程序集中的

'/ ImageMagickNET / bin / ReleaseQ8 / ImageMagickNET.dll'包含本机代码   不能由Mono执行此操作   平台。

快速谷歌告诉我the imagemagick codeplex page 您可能正在使用所谓的“包装器”。

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