在MonoTouch中使用ImageMagick的最佳方法是什么?
添加ImageMagickNET lib似乎在运行时产生错误,例如:
方法 “模块:CrtImplementationDetails.DoDllLanguageSupportValidation ()'在集会中 '/ImageMagickNET/bin/ReleaseQ8/ImageMagickNET.dll' 包含不能的本机代码 由Mono在这个平台上执行。该 装配可能是使用 C ++ / CLI。
有特定于iPhone的二进制文件,我想我必须按照这里描述的方式链接整个库:
http://monotouch.net/Documentation/Binding_New_Objective-C_Types
感谢您的帮助:)
答案 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进行包装,这里有一个指南:
答案 1 :(得分:0)
该错误为您解答了问题:
程序集中的'/ ImageMagickNET / bin / ReleaseQ8 / ImageMagickNET.dll'包含本机代码 不能由Mono执行此操作 平台。
快速谷歌告诉我the imagemagick codeplex page 您可能正在使用所谓的“包装器”。
这意味着imagemagick代码本身仍然是非.NET imagemagick,它永远不会在你的iPhone上运行。