gpt4 book ai didi

python - kivy: python for android + C++

转载 作者:太空狗 更新时间:2023-10-29 22:31:01 27 4
gpt4 key购买 nike

我使用 python-for_android 创建了一个在 android 上运行的基于 kivy 的应用程序。

我的应用程序的某些部分已使用 cython 在 c++ 中进行了优化。

我设法使用适用于 android 的 python 和自定义配方编译我的所有代码。

我的代码也可以在 linux 下与 kivy 完美配合。

但是在我的android 设备上,它无法加载一些c++ 函数。例如,我收到消息:

ImportError: Cannot load library: reloc_library[1307]:  1839 cannot locate '_ZNSt9basic_iosIcSt11char_traitsIcEE4initEPSt15basic_streambufIcS1_E'...

有什么想法吗?

谢谢

最佳答案

我终于设法让我的代码在 android 下使用 C++ 工作。

有两个困难:

1 - 从 push_arm 创建的 arm 环境访问 c++ 头文件。我必须在我的食谱中添加正确的内容,并修改默认的 CXX 变量:

    #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");

关于python - kivy: python for android + C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17746617/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com