我想在我的项目中包含一个 C++ 库kivy https://kivy.org/蟒蛇应用程序。可以自动执行此操作swig https://swig.org/Doc4.1/Python.html# and 迪斯图尔斯 https://docs.python.org/3/library/distutils.html,它有效地从 C++ 代码生成 .pyd python 库。在 Windows 上运行没有任何问题:我将 .pyd 文件包含在我的 Kivy 应用程序中并且一切都运行,但我也想在移动设备上运行该程序。
所以我的问题是如何生成一个与 android (arm) 兼容并包含我需要的 c++ 代码的 python 库。
我已经问了一个不同的问题,关于如何在 Windows x86_64 上交叉编译 Arm 的 python 代码 https://stackoverflow.com/questions/76072712/creating-a-python-library-for-use-in-android。有人推荐了Chaquopy https://chaquo.com。这似乎可行,但当然只能使用 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 存储库:用于交叉编译Python扩展模块的虚拟环境 https://github.com/benfogle/crossenv。我是否需要它来编译适用于 Android 的 Python 还是有其他方法?