我试图实现的是将我的 Python 脚本编译为 lib/dll 并使用 arguments 调用它。
这是脚本的setup.py文件:
from distutils.core import setup
from Cython.Build import cythonize
setup(
ext_modules = cythonize("nu3k2nu4k.py")
)
使用此命令生成编译输出:
python setup.py build_ext --inplace
产生以下文件:
nu3k2nu4k.c
nu3k2nu4k.cp36-win_amd64.pyd
nu3k2nu4k.pyx
和一个名为 build 的子目录,其中包含:
nu3k2nu4k.cp36-win_amd64.exp
nu3k2nu4k.cp36-win_amd64.lib
nu3k2nu4k.obj
如何从带有参数的 c++ 代码调用已编译的脚本?
我使用 Cython 来完成这项任务,但这不是强制性的,也可以使用 boost 或其他方法(我这样做是为了使源代码无法访问)。
编辑:
使用 Mykola Shchetinin 提供的文档,我设法为我的脚本生成了一个 API 头文件。我基本上在我的主函数中添加了一个 cdef api 关键字。虽然这确实有助于我将方法名称导出到 c++,但我仍然需要一种方法来将一些参数传递给我的脚本。因为我传递字符串参数,所以我希望有一种类似的方式,比如使用 PyRun 设置 argv 并解析脚本中的参数(因为如果可能的话,我想避免将字符串从 c 转换为 python 编码)有什么简单的方法可以传递那些字符串参数?
编辑2:
我让它工作了!按照 Mykola 提供的示例并直接编译 c 文件输出而不是使用 .lib 我得到了它的工作。