扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
dll 是 Windows 平台的动态库,而 so 是 Linux 平台的。即使你用别的编译器如 gcc 把 VC 开发的动态库能编译为 so 也能被 Android 调用,但归根结底这个 so 还是要调用 Windows API,这根本就是不可能生效。要 Android 能调用,那么就必须要用标准 C 以及 Android 提供的系统 API 函数在 Linux 上编译。在 Windows 平台,你可以试试安装 MinGW,使用其 gcc 编译器来编译 so 库。就是不知道是否可以设置 CPU 指令集,如果不能设置 ARM 那么编译了没法用。
创新互联企业建站,10年网站建设经验,专注于网站建设技术,精于网页设计,有多年建站和网站代运营经验,设计师为客户打造网络企业风格,提供周到的建站售前咨询和贴心的售后服务。对于网站设计制作、成都网站建设中不同领域进行深入了解和探索,创新互联在网站建设中充分了解客户行业的需求,以灵动的思维在网页中充分展现,通过对客户行业精准市场调研,为客户提供的解决方案。
在一些Android应用的开发中,需要通过JNI和 Android NDK工具实现JAVA和C/C++之间的相互调用。
Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI是本地编程接口,它使得在 Java 虚拟机 (VM)内部运行的 Java代码能够与用其它编程语言(如 C、C++和汇编语言)编写的应用程序和库进行交互操作。
NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。
安卓也可以用C语言编写,这种方式程序效率高,但需要一些底层知识。。。(即所谓NDK),Android在支持NDK后是可以实现用C和C++来编写的。因为用C++比较多,之前用cocos2d-x写过Demo游戏。就使用了NDK编译出.so文件然后放入Android工程用在Java层调用。Android SDK的Java层是可以通过JNI和C/C++进行数据交互的。
详见:
Android NDK | Android Developers
The NDK is a toolset that allows you to implement parts of your app using native-code languages such as C and C++. For certain types of apps, this can be helpful so you can reuse existing code libraries written in these languages, but most apps do not need the Android NDK.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流