Iphone Monotouch和本机iOS代码

Iphone Monotouch和本机iOS代码,iphone,xamarin.ios,Iphone,Xamarin.ios,是否可以在单个应用程序中将使用monotouch编译的C#库与objective-C前端链接起来,或者应用程序必须是全部还是什么都没有?这是可能的,但你无法从MonoTouch工具中获得任何帮助,你无法摆脱这样一个事实,即你仍然需要Mono运行时来执行你的C代码 为了向Objective-C应用程序提供Mono运行时,必须将运行时嵌入到应用程序中。MonoTouch网站上有一些关于如何做到这一点的文档,您可以找到有关将Mono嵌入应用程序的更多技术细节 MonoTouch在编译C代码时会生成.m

是否可以在单个应用程序中将使用monotouch编译的C#库与objective-C前端链接起来,或者应用程序必须是全部还是什么都没有?

这是可能的,但你无法从MonoTouch工具中获得任何帮助,你无法摆脱这样一个事实,即你仍然需要Mono运行时来执行你的C代码

为了向Objective-C应用程序提供Mono运行时,必须将运行时嵌入到应用程序中。MonoTouch网站上有一些关于如何做到这一点的文档,您可以找到有关将Mono嵌入应用程序的更多技术细节

MonoTouch在编译C代码时会生成.m和.s文件,Objective-C使用这些文件来调用该代码。这些文件将需要包含在消费Objective-C项目中,但MonoTouch会在使用这些文件后清理这些文件。为了防止mtouch编译器删除.m和.s文件,在调用编译器时使用--keeptemp选项。您可以找到一个好方法来帮助您了解如何从命令行正确调用mtouch


最后,您需要完整版本的MonoTouch来完成此操作。试用版不会生成.s文件。

谢谢您提供的信息。令人失望的是,试用版没有测试此功能所需的支持;但该库足够大,可能仍然比端口便宜。作为后续,试用版是否允许编译该库并运行虚拟/概念验证应用程序,以查看其是否有效?不确定概念验证与您最初描述的有什么不同,因此我无法回答。既然您想从ObjC调用MT代码,我假设您有ObjC的源代码。您意识到可以为ObjC代码创建绑定,并从MonoTouch调用该代码。试图从ObjC呼叫MT就像逆流游泳,可能,但非常累和困难。我建议您考虑绑定您的ObjC代码,并从您的MT应用程序中调用它。下面是关于绑定的更多信息,我目前没有任何ObjC代码。我有一个C#windows应用程序。它的GUI/DAL组件将被替换,但如果可能的话,我希望避免花费一到六个月的时间将计算库移植到ObjC。我对从ObjC调用机器翻译库感兴趣的是,通过尽可能多地包装C#代码,并让一位负责iOS应用程序编写UI的同事来尽量减少培训成本。如果我最终编写整个应用程序100%MT的可能性更大,因为我对C#很了解,但对ObjC一点也不了解。我不确定monotouch,但我认为如果monotouch已经编译了,iOS可以运行代码。我不确定如何使用API调用C#库,但我认为链接是可能的