使用本机c ++库构建移动应用程序的快速方法

时间:2012-05-27 13:19:36

标签: c++ html5 mobile

我正在考虑构建移动应用程序。我的第一个目标是iPad / iPhone设备。 Android目标也可能很好。我已经编写并测试了win32的应用程序,我喜欢以最小的努力将其移植到移动平台。

我的应用程序是用C ++编写的。它的主要功能是解析一个表示数学表达式的字符串(脚本语言)。我在一个静态库中隔离了与平台无关的代码,我使用Xcode成功编译了iOS。我需要添加一些UI来与库进行交互。交互是在两个方向上完成的。 UI将用于评估的字符串表达式发送到静态库,并调用一些函数来读取变量值(主要是float和strings的向量(表))。另一方面,库需要一些外部函数来在TextView和一些绘图函数上打印文本结果。

在我的UI层中,我需要调用静态库导出的一些外部“C”函数,如:

int ExecuteExpression(char *expression)
void StopExecution()

在我的库中,我需要调用UI应用程序导出的一些外部“C”函数,如:

void PrintText(char *text)
void Plot2D(double *x, double *y, int len);
void plot3D(double *x, double *y, double *z, int len);

我查看了MoSync IDE,但它不允许调用用户创建的静态库。

我还查看了Marmalade EDK,这似乎是一种通过编写扩展来创建调用用户定义的静态库的UI的好方法。我不明白为什么我必须编写一个EDK来包装我的库函数用于橘子酱,因为最终的项目是在Xcode中编译的,我认为我必须能够直接调用我的“C”函数并链接到我的库。但Marmalde是否具有原生外观和感觉iOS UI?我可以使用marmalade API直接在NSView上使用C ++绘图吗?

对于绘图功能,我有几个选择: 1-在我的库中绘制(RGB)缓冲区图像,并将图像数据发送到UI以显示在视图(NSView)中。在这种情况下,与情节的相互作用将非常有限。更改视图尺寸时重新绘制将是一个需要解决的问题,因为绘图例程必须记住绘制图形时所做的所有操作。

2-使用HTML5 / JS功能在UI层中绘制。在这种情况下,我必须能够将HTML5 / JS函数导出为“C”函数,如“Plot2D(double * x,double * y,int len)”,以便从库中调用它们。 UI层将保存数据副本,并且HTML5 / JS代码将管理重绘,缩放等。这可能吗 ?是否有从“C”静态库调用HTML5 / JS的示例?

3-将原始绘图函数(如Line,point,rectangle,polygonfill,canvashandle等)从UI层导出到我的静态库,并使库管理所有绘图函数。用户界面还会发送一些事件用于重绘,缩放等。

4-您提议的任何其他解决方案。

从我的帖子中你可以理解,我掌握了C,C ++,JS,HTML5,delphi,并且只有一些关于Objective-C和iOS UIkit的基本知识。所以我正在努力找到最有效的方式来制作我的应用程序。

问候,

0 个答案:

没有答案