- 论坛徽章:
- 0
|
本帖最后由 正版电子白菜 于 2016-05-10 22:28 编辑
python版本3.4,C编译器有两个,一个是虚拟机上的linux的GCC,另一个是树莓派上的GCC.
C文件和py文件都放到同一个目录,百度过不要使用test.py这个名字,所以起了个名字叫gpio001.py(实际上跟gpio没有毛关系)
gpio001.py:
def hello():
print "this is python!"
main.c
#include <stdio.h>
#include <python3.4m/Python.h>
void main(void)
{
PyObject *pModule;
PyObject *pFunc;
printf("test python1\n");
Py_Initialize();
PyRun_SimpleString("print('py_string')"); //这一行成功打印出字符
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')"); //根据网上的经验,设置路径与C文件一样
pModule = PyImport_ImportModule("gpio001"); //但这里import就失败了
if (!pModule)
{
printf("import python failed!!\n");
}
else
{
pFunc = PyObject_GetAttrString(pModule, "hello");
PyEval_CallObject(pFunc, NULL);
}
Py_Finalize();
}
以上C,PY代码是放到同一个文件夹里,无论是在虚拟机上编译,还是在树莓派上编译(由于水平有限,无法用交叉编译器在虚拟机上make出一个for 树莓派的python,所以只能直接把代码放在树莓派里用SSH操作编译),都在import上返回0.但PyRun_SimpleString("print('py_string')"); 这句是能打印出字符的.
请问问题究竟出在哪里呢?太纠结了! |
|