2011-01-05 68 views
2

虽然学习用于monotouch的C#和Delphi Prism是有益的,但我正在寻找一种重用普通Object Pascal代码的方法。简单地重写我在德尔福超过15年所做的一切,简直无法接受。使用单声道的freepascal库(.dylib)

所以我的问题是双重的:

  1. 如果我为便于讨论有 图书馆写在普通对象 帕斯卡尔没有外部的依赖 并与ARM FreePascal的 编译器为iPhone编译 - 我能使用 从monotouch产生的dylib?
  2. 如果以上内容是正确的,我该如何从C#/ Prism声明并调用这些外部函数?我如何处理在单声道中传递记录类型等?

我注意到其他iPhone应用程序附带自己的dylib文件(SDL游戏库就是一个典型例子)。我觉得没有理由不这样做。

+0

注意到有一个'dylib'标签,也许它吸引了更多的读者 – mjn 2011-01-05 06:21:22

+0

最大5个标签的黯然 – 2011-01-05 06:48:27

+0

你为什么不尝试在网上搜索?我建议以下搜索词:mono freepascal dylib – 2011-01-05 11:07:39

回答

1

我什么都不知道的MonoTouch的,而较少有关Mac与ARM器件,但:

如果您的lib大都采用cdecl调用约定,和MonoTouch的也许可以调用的cdecl(C)功能在一些本地的运行机制(P/Invoke或JNI类似的东西),这将是一个可以工作的基本原则。

结构相同,用{$ packrecords C}声明。

在调用函数之前,您可能还需要调用两个函数(IIRC FPC_INITIIALIZE和另一个函数来完成)来初始化/确定FPC RTL。

高于普通C级别的任何东西,如 Delphi对象等可能不可用,并且必须包装。也许objective Pascal对象是可重复使用的(至少如果Monotouch理解客观的C),但像大多数其他Apple特定的东西,这不是我的特长。