情况:
你用C++写了后台生成DLL,用unity3D调用DLL,游戏PC版OK,但是想变成手游,需要将DLL变成so
步骤:
1.安装jdk,配置安卓环境、eclipse(这个不说了,网上泛滥)
2.打开eclipse新建个Android项目,Flie--new--第二个,建的时候写个名字,剩下的一路next
3.在新建的项目下面新建一个文件夹jni,在这个文件夹里在创建一个文件夹cpp,将你生成DLL的那些所有的.cpp和.h都放进去
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)
http://www.cnblogs.com/yejiurui/p/3476565.html 可参考
elicpes上面倒数第四个,Project->Properties->Builders->New,新建一个Builder
(第一个选项)Main:
选Browse File System
选Browse File System,找到你新建的这个安卓项目里面的一个ndk-build.cmd
这里简单了,直接打开Browse Workspace直接选择你新建的安卓项目
下面有一个Apple的选项,按下,每个页面设置完都要按下
(第二个选项)Refresh:
选项和下面勾对一样,Sp那里进去选你项目里的jni文件夹
(第四个选项)Build Options:(和第三个类似,倒数第二个对号的是自动的意思,生成so自动生成)
6.生成so
Ctrl +s保存,就自动生成,如果没有错的话,就是像下面一样黑的
然后在计算机里你安卓项目的地方libs的文件夹里会自动生成一个armeabi的文件夹,里面就有.so
7.过程中遇到的问题
(1).cpp和.h里面有StdAfx.h,C标准库的东西,删掉
(2).库函数的地方删掉__declspec(dllexport),这是DLL的东西
(3).我忘记截图了,就是指针赋空的NULL都得换为0
(4)我用的随机数,不允许,在前面加了stdlib.h
(5)如果你用了C++STL的东西,像创建Andriod.mk的方式创建Application.mk,里面写
在Application.mk文件中添加APP_STL := stlport_static
或APP_STL := gnustl_static
原文地址:http://blog.csdn.net/panpen120/article/details/42193003