我终于设法使我的代码在 android 下使用 C++ 工作。
有两个困难:
1 - 从 push_arm 创建的 arm 环境访问 c++ 头文件。我必须在我的配方中添加正确的包含,并修改默认的 CXX var :
#dirty hack
export C_INCLUDE="-I$ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/$TOOLCHAIN_VERSION/include/ -I$ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/$TOOLCHAIN_VERSION/libs/armeabi/include/"
export OLD_BOUBOU=$CC
export CC="$CXX $C_INCLUDE"
try $BUILD_PATH/python-install/bin/python.host setup.py install -O2
#try cp libgnustl_shared.so $LIBS_PATH/
try cp $ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_shared.so $LIBS_PATH/
export CC=$OLD_BOUBOU
2 - 找到包含 libstl 函数的共享库,并加载它。这是更难的部分:
经过一番研究,我发现 stl 函数存储在 libgnustl_shared.so 中,而不是 listdc++.so 中。所以你必须在你的apk中嵌入这个库。
这是线路的目的try cp $ANDROIDNDK/sources/cxx-stl/gnu-libstdc++/4.4.3/libs/armeabi/libgnustl_shared.so $LIBS_PATH/
然后,您必须加载它。我已经修改:
src/src/org/renpy/android/PythonActivity.java
src/src/org/renpy/android/PythonService.java
by adding this line after the others System.loadLibrary() :
System.loadLibrary("gnustl_shared");