我有 .pyc 文件,我知道其中的功能。
我需要从我尝试使用PyImport_Import的 C/C++ 调用这些函数,但它返回 NULL。
pName = PyString_FromString("test");
pModule = PyImport_Import(pName );
如果我调用pModule = PyImport_ImportModule("py_ffile"); 然后它适用于 .py 文件。但我不想从.py 调用函数。我想从 .pyc 文件中调用它。
您的 py 文件所在的路径可能未知。如果您使用的是 Boost Python,则尝试像这样使用 sys 添加路径:
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append(\"your path here\")");
或使用这个:
PySys_SetPath("your path here");
像这样,如果你直接使用 python dll:
SetSysPath("your path here");
然后再试一次PyImport_Import
这不完全是您所要求的,但您可以考虑使用Cython。它会将您的代码编译为 C,您可以毫无问题地从 C++ 程序中使用它。
Boost::Python一个 C++ 库,它可以在 C++ 和 Python 编程语言之间实现无缝互操作性,可能会对您有所帮助。