日期:2014-05-20  浏览次数:21075 次

如何将已有c++项目编译成android平台的.so共享库
已经有了一个c++项目,现在就是要将它编译成android平台可以使用的.so文件,怎么弄???
Android C++

------解决方案--------------------
dll是windows的东西,android是基于Linux系统的,不可能兼容。要调用,必须用android平台的C++编译器,如这个:
https://play.google.com/store/apps/details?id=com.n0n3m4.droidc&hl=en
------解决方案--------------------
引用:
打包成.dll文件,在android里面调用

....别误导别人

参考Android NDK里面的例子.主要是mk文件的写法..
------解决方案--------------------
拿到源码,用arm-gcc重新编译一下,使用NDK,别人写好的C++项目你总得编译成so或者可执行文件或者目标文件吧
------解决方案--------------------
引用:
Quote: 引用:

拿到源码,用arm-gcc重新编译一下,使用NDK,别人写好的C++项目你总得编译成so或者可执行文件或者目标文件吧

已经用arm-gcc编译生成了可执行文件,然后就不会弄了,我不会c++,大神能再说点吗?

首先目的要明确,你这C++项目中有哪些函数需要提供一定的服务给上层调用?可以将这些函数集中在一起,然后编译成so出来给上层使用。
编译成可执行文件,除非是源码环境下编译一整套系统,否则感觉没什么用啊
------解决方案--------------------
引用:
Quote: 引用:

首先目的要明确,你这C++项目中有哪些函数需要提供一定的服务给上层调用?可以将这些函数集中在一起,然后编译成so出来给上层使用。
编译成可执行文件,除非是源码环境下编译一整套系统,否则感觉没什么用啊

哦哦,大概明白了,非常感谢!!!
不过我又有问题了,生成.so共享库之后,android怎样调用呢?通过jni吗?具体是怎样个步骤呢? 


so放进源码目录平级的libs/armeabi目录下,用System.loadLibrary先加载so库,再通过jni调用,jni相关知识可以参照我的博客:
http://blog.csdn.net/dr8737010/article/details/7643994