我想在我的kivy python应用程序中包含一个c库。使用swig和distutils可以自动完成这一点,它有效地从c代码中生成了一个.pyd python库。在工作没有任何问题的Windows上:我将.pyd文件包含在我的Kivy应用程序中,所有内容都可以运行,但我也想在移动的设备上运行该程序。
所以我的问题是如何生成一个与android(arm)兼容并包含我需要的c代码的python库。
I already asked a different question about how I can cross-compile python code for arm on windows x86_64。有人推荐Chaquopy。这看起来是可行的,但当然只有用python作为源代码,而不是用c。
对于使用swig和distutils创建库的过程,我创建了一个'setup.py',它从swig获取输出并构建.pyd库。有没有可能修改它来编译arm?
#!/usr/bin/env python
"""
setup.py file for SWIG
"""
from distutils.core import setup, Extension
example_module = Extension('_HelloCpp',
sources=['HelloCpp_wrap.cxx', 'HelloCpp.cpp'],
extra_compile_args = ["-std:c++17"]
)
setup (name = 'HelloCpp',
version = '0.1',
author = "simonsays",
description = """Simple swig test with HelloCpp""",
ext_modules = [example_module],
py_modules = ["HelloCpp"],
)
我也偶然发现了这个Github仓库:Virtual Environments for Cross-Compiling Python Extension Modules。我需要它来编译Android的Python吗?还是有其他方法?
1条答案
按热度按时间qeeaahzv1#
要在Android Kivy应用中包含C++库,您需要定义一个编译配方。有关详细信息,请参阅python-for-android documentation和existing recipes列表。