2012-05-20 39 views
0

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

有没有人对这个过程的性能问题有任何想法。生成的代码是否有效?

我想用一些UI调用一个简单的iOS苹果,在静态库中调用我的C++代码。所以我做了该出口一个功能的静态库(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有关从外部静态库调用函数?

亲切的问候,

回答

0

管道工具将只接受MoSync IL,但你想给它ARM代码。这是行不通的。

但是,可能有一种可能的解决方法。你可以创建一个存根库,用你的程序进行编译,然后从生成的C++代码中移除它,并用适当的版本替换它。

+0

谢谢你替换存根库的想法。但你认为它会起作用吗?由mosync为函数'double tst_func(double x)'生成的ARM代码将是'int tst_func(int i0,int i1)'。 Xcode生成的ARM代码是否与mosync代码相同? – Yazou