DLL变换so(NDK配置)

DLL转换so(NDK配置)

情况:

你用C++写了后台生成DLL,用unity3D调用DLL,游戏PC版OK,但是想变成手游,需要将DLL变成so

步骤:

1.安装jdk,配置安卓环境、eclipse(这个不说了,网上泛滥)

2.打开eclipse新建个Android项目,Flie--new--第二个,建的时候写个名字,剩下的一路next

DLL变换so(NDK配置)

3.在新建的项目下面新建一个文件夹jni,在这个文件夹里在创建一个文件夹cpp,将你生成DLL的那些所有的.cpp和.h都放进去

DLL变换so(NDK配置)

4.在jni文件夹下面新建文件,flie,命名为Andriod.mk(要写后缀名)

在这里面写

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := OnePersonDll------------------这里是你生成so的名字,和你DLL的名字保持一致,后面用so的时候前台调用的名字不用改了

MY_CPP_LIST := $(wildcard $(LOCAL_PATH)/cpp/*.cpp)----------这里是cpp,是你装文件的文件夹名字,LIST,文件夹,将你所有文件一次性的导入

#MY_CPP_LIST += $(wildcard $(LOCAL_PATH)/c++/*.cpp)
LOCAL_SRC_FILES := $(MY_CPP_LIST:$(LOCAL_PATH)/%=%)
#LOCAL_SRC_FILES := hello-jni.c

include $(BUILD_SHARED_LIBRARY)

DLL变换so(NDK配置)

5.配置NDK

http://www.cnblogs.com/yejiurui/p/3476565.html  可参考

elicpes上面倒数第四个,Project->Properties->Builders->New,新建一个Builder

DLL变换so(NDK配置)

(第一个选项)Main

选Browse File System

DLL变换so(NDK配置)

选Browse File System,找到你新建的这个安卓项目里面的一个ndk-build.cmd

DLL变换so(NDK配置)

这里简单了,直接打开Browse Workspace直接选择你新建的安卓项目

DLL变换so(NDK配置)

下面有一个Apple的选项,按下,每个页面设置完都要按下

(第二个选项)Refresh

选项和下面勾对一样,Sp那里进去选你项目里的jni文件夹

DLL变换so(NDK配置)

(第四个选项)Build Options:(和第三个类似,倒数第二个对号的是自动的意思,生成so自动生成)

DLL变换so(NDK配置)

6.生成so

Ctrl +s保存,就自动生成,如果没有错的话,就是像下面一样黑的

DLL变换so(NDK配置)

然后在计算机里你安卓项目的地方libs的文件夹里会自动生成一个armeabi的文件夹,里面就有.so

DLL变换so(NDK配置)

7.过程中遇到的问题

(1).cpp和.h里面有StdAfx.h,C标准库的东西,删掉

DLL变换so(NDK配置)

(2).库函数的地方删掉__declspec(dllexport),这是DLL的东西

DLL变换so(NDK配置)

(3).我忘记截图了,就是指针赋空的NULL都得换为0

(4)我用的随机数,不允许,在前面加了stdlib.h

DLL变换so(NDK配置)

(5)如果你用了C++STL的东西,像创建Andriod.mk的方式创建Application.mk,里面写

Application.mk文件中添加APP_STL := stlport_static 

 或APP_STL := gnustl_static