1

我正在考虑构建一个移动应用程序。我的第一个目标是 iPad/iPhone 设备。Android 目标也很不错。我已经为 win32 编写并测试了该应用程序,我希望以最少的努力将其移植到移动平台。

我的应用程序是用 C++ 编写的。它的主要功能是解析呈现数学表达式(脚本语言)的字符串。我将独立于平台的代码隔离在我使用 Xcode 为 iOS 成功编译的静态库中。我需要添加一些 UI 来与库进行交互。交互是在两个方向上进行的。UI 将字符串表达式发送到静态库并调用一些函数来读取变量值(主要是浮点数和字符串的向量(表))。另一方面,该库需要一些外部函数来在 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 的原生外观和感觉?我可以使用 C++ 使用橘子酱 API 直接在 NSView 上绘图吗?

对于绘图功能,我有几个选择: 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- 将原始绘图函数(如线、点、矩形、多边形填充、画布手柄等)从 UI 层导出到我的静态库,并使库管理所有绘图函数。UI 也会发送一些事件用于重绘、缩放等。

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

正如你在我的帖子中所了解的,我掌握了 C、C++、JS、HTML5、delphi,并且只对 Objective-C 和 iOS UIkit 有一些基本的了解。所以我试图找到最有效的方法来制作我的应用程序。

问候,

4

0 回答 0