链接到MonoTouch中的C ++本机库

时间:2011-03-09 12:14:59

标签: xamarin.ios monodevelop

我正在阅读将本地库链接到MonoTouch,特别是本文档:

http://monotouch.net/Documentation/Linking_Native_Libraries

这里描述了与C库的链接。是否也可以从MonoTouch链接到C ++库?我是MonoTouch的新手,尤其是导入库的新手,所以如果确实有可能,我会很感激有关我可能会尝试导入C ++库的问题的任何建议。将C ++库包装在Objective-C库中,然后使用btouch导入它是一个很好的选择?或者有更简单的方法吗?请记住,我对C ++(以及Objective-C)的了解最好被描述为“危险”。 ;)

我问的原因是我需要使用Sybase的C ++ API来访问他们的Ultralite数据库。我已经设法获得一个示例应用程序,该应用程序使用Objective-C访问在Xcode中工作的Ultralite C ++ API。但现在我正在尝试将此示例移植到MonoTouch。示例应用程序可以在这里找到:

https://github.com/BruceHill/Ultralite-Names-Sample-ObjC

Xcode的Sybase文档提到了以下内容,并参考了在Xcode中使用API​​:

本教程使用UltraLite C ++ API。为了消除转换为C类型的需要,将源代码编译为C ++。要将项目编译为C ++:

  1. 在“在构建中搜索设置”框中,输入“将源编译为”。
  2. 从“值”字段中的选项中选择“Objective-C ++”
  3. 这对于在MonoTouch中使用此API有何意义?

1 个答案:

答案 0 :(得分:0)

你当然可以使用C ++ api,但你需要将它包装在C api或ObjC + btouch api中才能与之交谈。调用C api使用PInvoke,而C ++库使用符号重整。虽然从理论上讲你可能会对错位符号进行调整,但这不是一个好主意,因为修改是编译器特定的。