ios - 通过 Mono 框架在 iOS 应用程序中使用现有的 DLL

标签 ios xamarin.ios

对于我当前的 iOS 项目之一,一些业务逻辑已通过 DLL 和 Native C++ 绑定(bind)代码提供给我,我必须在动态库 (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_Projet 由绑定(bind) C++ 动态库提供。我无法获取基本 DLL 的代码,并且必须像在 IOS 上一样使用该 DLL。

我目前正在研究单声道触摸是否可以让我的 IOS 应用程序(基于 Xcode 的基本 iOS Objective C)启动使用标准单声道框架构建的 DLL。在购买许可证之前,我必须确保 MonoTouch 能够执行此操作。

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

感谢您的帮助。

最佳答案

the DLL that as been build with the standard mono framework.

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

因此,针对完整框架编译的程序集无法在 MonoTouch 上运行是非常常见的情况,除非重新编译它们(针对 MonoTouch BCL)。

If i choose to use MonoTouch, can i keep my project in Xcode and just build the dylib in MonoDevelop and then import the lib the Xcode project ?

它比这更复杂(例如 MonoDevelop 不会给你一个 .dylib)。您也许可以通过谷歌搜索一些说明来执行此操作,但请注意,这种情况不受支持

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

关于ios - 通过 Mono 框架在 iOS 应用程序中使用现有的 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9800536/

相关文章:

ios - 使用 NSURLSession 异步下载和处理数据

c# - mono(c#) 检测用户是否在同一网络上

uinavigationcontroller - 通过子类化定义自定义 UINavigationBar 会删除导航项

ios - 如何在swift中定义常量?

iOS8 - 呈现模态视图会删除 subview

ios - 在 Release模式或临时模式下编译时出错,Xamarin Forms iOS,

c# - 创建一个使用 CAGradientLayer 作为其层的 UIView 子类

c# - 在 RestSharp 中导入下一组图像

ios - NSXMLParser parse() 只工作一次

iOS 动画问题