【问题标题】:Use existing DLL in iOS app through mono framework通过 mono 框架在 iOS 应用程序中使用现有的 DLL
【发布时间】:2012-03-21 07:51:19
【问题描述】:

对于我当前的一个 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_Projet 由绑定 C++ 动态库提供。我无法获取基本 DLL 的代码,我必须像在 IOS 上一样使用 DLL。

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

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

感谢您的帮助。

【问题讨论】:

  • 试试 Monotouch 的试用版。您只能使用 iPhone 模拟器 - 其他一切都像完全许可的版本。
  • AFAIK,您不能在 Obj-C 应用程序中使用 Mono 库。

标签: ios xamarin.ios


【解决方案1】:

使用标准单声道框架构建的 DLL。

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

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

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

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

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

【讨论】:

  • 好的,非常感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2013-03-04
  • 2016-03-06
  • 1970-01-01
  • 2011-03-01
  • 1970-01-01
相关资源
最近更新 更多