环境:WIN7 64
vs2013
cocos2dx3.2
smartfoxserver2x c++api 1.1.5
NDK r8e r9d r10b 尝试了多个版本
boost 1.49.0 1.52.0 1.53.0 1.55.0
新手一个 尝试加载smartfoxserver2x的c++ api到cocos2dx 的工程 连接服务器 并发布为android工程 最后打出apk包
使用 cocos new -l cpp xxxx 在目录下创建cocos2d工程
参考http://docs2x.smartfoxserver.com/GettingStarted/client-api-cpp教程 加载进vs 写了几句代码连结服务器 模拟器上调试 成功 可以连接
现在问题来了!
发布android工程
首先在未导入api的情况下 就是默认那个模板 使用build_native.py 发布android成功发包到真机测试
导入api后无法发布
搜索后 参照教程(这个教程是在sfs2x的c++例子的一个叫fullhouse里的一个pdf)
首先要编译boost到android
https://github.com/MysticTreeGames/Boost-for-Android 这个链接中的工程
按照他的提示 多次更换 ndk版本和boost版本后 (使用boost 1.53.0 和 ndkr9d)成功启动编译
报
…failed updating 31 targets…
…skipped 9 targets…
…updated 10552 targets…
ERROR: Failed to build boost for android!
Done!
尽管仍然编译出了一部分文件
但是缺少了几个库 比如 带thread的这个 因为smartfox的api貌似会用到这个库 因此 到这里就无法解决了
由于最后是直接复制生成出的包到cocos2dx的工程下 因此尝试 使用了fullhouse中编译过的boost包(官方包为 boost1.52.0 ndk r8e 生成)
按照PDF教程
放到cocosdx工程的jni文件夹下 修改android.mk文件添加(对android.mk文件很迷茫 看不懂 只能照着教程改)
LOCAL_CFLAGS += -I$(LOCAL_PATH)/boost
LOCAL_LDLIBS += -L$(LOCAL_PATH)/boost/lib
LOCAL_LDLIBS += -lboost_system-gcc-mt-1_52 -lboost_thread-gcc-mt-1_52 -lboost_regex-gcc-mt-1_52
LOCAL_CPPFLAGS += -fexceptions
LOCAL_CPPFLAGS += -frtti
以及添加smartfox的api
拷贝api文件夹到工程目录
android.mk文件添加
LOCAL_CFLAGS += -I$(LOCAL_PATH)/…/…/libs/smartfox/Bitswarm
LOCAL_CFLAGS += -I$(LOCAL_PATH)/…/…/libs/smartfox/Controllers
LOCAL_CFLAGS += -I$(LOCAL_PATH)/…/…/libs/smartfox/Bitswarm
LOCAL_CFLAGS += -I$(LOCAL_PATH)/…/…/libs/smartfox/Bitswarm等
LOCAL_SRC_FILES := hellocpp/main.cpp
…/…/Classes/AppDelegate.cpp
…/…/Classes/HelloWorldScene.cpp
…/…/libs/smartfox/SmartFox.cpp
…/…/libs/smartfox/Bitswarm/BBox/BBClient.cpp
…/…/libs/smartfox/Bitswarm/BBox/BBEvent.cpp
…/…/libs/smartfox/Bitswarm/BaseController.cpp \等
启动build_native.py 编译
一开始在smartfox和boost 的cpp文件中报错
按照他的提示修改后(比如需要去掉boost::之类的问题(我也不知道为什么)) 这一步编译过了
然后在这里
SharedLibrary : libcocos2dcpp.so
在这之后开始大量报错(类似于)
jni/boost/lib/libboost_regex-gcc-mt-1_52.a(instances.o):instances.cpp:function v
table for boost::re_detail::parser_buf<char, std::char_traits >: error: un
defined reference to ‘std::basic_streambuf<char, std::char_traits >::xsget
n(char*, int)’
jni/boost/lib/libboost_regex-gcc-mt-1_52.a(instances.o):instances.cpp:function v
table for boost::re_detail::parser_buf<char, std::char_traits >: error: un
defined reference to ‘std::basic_streambuf<char, std::char_traits >::under
flow()’
最后生成失败
error: linker command failed with exit code 1 (use -v to see invoca
tion)
make.exe: *** Error 1
make.exe: Leaving directory `D:/cocosWorkspace/doudizhu/proj.android’
Traceback (most recent call last):
File “D:\cocosWorkspace\doudizhu\proj.android\build_native.py”, line 159, in <
module>
build(opts.ndk_build_param,opts.android_platform,opts.build_mode)
File “D:\cocosWorkspace\doudizhu\proj.android\build_native.py”, line 146, in b
uild
do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,and
roid_platform,build_mode)
File “D:\cocosWorkspace\doudizhu\proj.android\build_native.py”, line 82, in do
_build
raise Exception(“Build dynamic library for project " + app_android_root +
" ] fails!”)
Exception: Build dynamic library for project D:\cocosWorkspace\doudizhu\proj.a
ndroid ] fails!
请问这是什么问题有什么办法解决吗 或者有什么相关的教程吗