MoSync与外部库链接

时间:2012-05-20 19:18:16

标签: c++ ios

我刚刚发现了MoSync SDK,我认为它是C ++程序员生成iOS和Linux的一个非常好的选择。 Android应用程序使用相同的源代码。对于C ++程序员来说,MAUI API非常容易学习。 我在iPhone模拟器上测试了一个提供的示例,它运行得很好。但是当查看xcodeproject文件时,发现了一个看起来像汇编代码的C ++源文件。我搜索了有关编译过程的信息,似乎原始的c ++代码被翻译成IL语言,IL语言被转换为C ++代码。

是否有任何人对此过程的性能问题有所了解。生成的代码是否有效?

我想过制作一个简单的iOS苹果,其中包含一些在静态库中调用我的C ++代码的UI。所以我创建了一个静态库(libmylib.a),它导出一个函数:

extern "C" double tst_function(double x)
{
    return sin(x)+2.5;
}

然后我从MoSync HelloNativeUI示例中调用了tst_function,并将libmylib.a添加到MoSync IDE中的链接器标志。但是我在编译过程中遇到了错误:

>>pipe-tool libmylib.a -appcode=KOOU -stabs=stabs.tab .....

failed to load '-appcode=KOOU'

我还尝试将libmylib.a添加到mastdD.lib,MAUtilD.lib,NativeUI.lib之后的其他库中,但是我收到了以下错误消息:

那么如何告诉MoSync IDE调用静态库中的外部函数?

pipe-tool Copyright 2007-2009 Mobile Sorcery AB
pass 1. 97 known symbols.
/Users/mosyncbuilder/slave/buildScripts/temp_j4DF/source/libs/NativeUI/ActivityIndicator.cpp:58: Error: Illegal instruction '!<arch>',

那么如何告诉IDE MoSync从外部静态库调用函数?

亲切的问候,

1 个答案:

答案 0 :(得分:0)

Pipe-tool只接受MoSync IL,但您尝试为其提供ARM代码。那不行。

但是,可能存在可行的解决方法。您可以创建一个存根库,使用您的程序对其进行编译,然后将其从生成的c ++代码中删除,并将其替换为正确的版本。