xamarin.通过mono框架使用iOS应用程序中现有的DLL



对于我当前的一个iOS项目,已经通过DLL和本机C++绑定代码向我提供了一些业务逻辑,我必须在动态库(dylib)中重新编译这些代码,然后通过该动态库使用DLL。最后,DLL的使用方式如下:

int main(int argc, char** argv){
  RTEnvironnement::CreateRTEnvironnement("../dll/RT.dll");
  RT::RT_Facade *  mFacade = new RT::RT_Facade();
  RT::RT_Data_Projet *  mProjet = new RT::RT_Data_Projet();
  mProjet->Load_From_XMLFile(argv[1]);
... 

对象RTEnvironnement、RT_Facade、RT_Data_Project由绑定C++动态库提供。我无法获得基本DLL的代码,我必须使用IOS上的DLL。

我目前正在研究mono-touch是否可以让我的IOS应用程序(基于Xcode的基本IOS Objective C)启动使用标准mono框架构建的DLL。在购买许可证之前,我必须确保MonoTouch能够做到这一点。

有人做类似的事情吗?有最简单的方法吗?如果我选择使用MonoTouch,我可以将我的项目保留在Xcode中,只在MonoDevelop中构建dylib,然后将该lib导入Xcode项目吗?

谢谢你的帮助。

使用标准mono框架构建的DLL。

MonoTouch(类似于Android版的Mono)提供了一个类似于Silverlight的基类库(BCL)配置文件(超集)。然而,它是整个Mono框架的一个子集。

因此,根据完整框架编译的程序集在MonoTouch上不起作用是非常常见的,除非它们被重新编译(针对MonoTouch BCL)。

如果我选择使用MonoTouch,我可以将我的项目保留在Xcode中,只在MonoDevelop中构建dylib,然后将该lib导入Xcode项目吗?

它比这更复杂(例如,MonoDevelop不会给你.dylib)。你可能可以在谷歌上搜索一些说明来完成这项工作,但请注意,这种情况不支持。

一个受支持的替代方案是让MonoTouch驱动应用程序,加载您需要的任何程序集,公开这些程序集,然后将控制权转移到您的Objective-C代码。

最新更新