虽然学习C#和Delphi Prism与monotouch一起使用是有益的,但我正在寻找一种方法来重用普通Object Pascal编写的代码。简单地重写我在德尔福15年来所做的一切都是不可接受的。
所以我的问题有两个:
我注意到其他iPhone应用程序附带了自己的dylib文件(SDL游戏库就是一个典型的例子)。我发现没有理由不这样做。
答案 0 :(得分:3)
我没有使用monotouch,但是Mono / .NET有一个名为P / Invoke(平台调用)的功能。
基本上,您在托管代码中将您的函数/过程声明为extern并添加DLLImport
属性。
与其名称DLLImport
相比,从Linux上的.so
文件和.dylib
文件中导入函数/过程。
答案 1 :(得分:1)
我对单声道触摸一无所知,而对于与Arm设备有关的Mac则不太了解,但是:
如果您的lib主要使用cdecl调用约定,并且monotouch可能通过某些本机操作机制(P / Invoke或类似JNI的东西)调用cdecl(C)函数,那么这将是一个可行的基本原则。
结构相同,用{$ packrecords C}声明。
在调用函数之前,您可能还需要调用两个函数(IIRC FPC_INITIIALIZE,另一个函数来完成)来初始化/完成FPC RTL。
任何高于普通C级别的东西,例如 Delphi对象等可能无法使用,必须包装。也许目标 Pascal对象是可重用的(至少如果monotouch理解客观C的那些),但是像大多数其他Apple特定的东西一样,这不是我的强项。