Python中文
首页
教程
问答
标签
搜索
登录
注册
未声明的标识符:PyUnicode_decodefsfdefau
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我试图从Python网站<a href="https://docs.python.org/3/extending/embedding.html" rel="nofollow noreferrer">https://docs.python.org/3/extending/embedding.html</a>编译示例代码。除了下面这一行,一切都很好:</p> <pre><code> pName = PyUnicode_DecodeFSDefault(argv[1]); </code></pre> <p>我在我的MacOS El Captain上安装了python3.6。我的make文件如下所示:</p> ^{pr2}$ < >编译C++代码时,我得到以下错误:</p> <pre><code>gcc -c call_function.cpp -I/Library/Frameworks/Python.framework/Versions/3.6/include/python3.6m call_function.cpp:16:13: error: use of undeclared identifier 'PyUnicode_DecodeFSDefault' pName = PyUnicode_DecodeFSDefault(argv[1]); ^ 1 error generated. </code></pre> <p>有人知道如何修正上述错误吗?我将非常感谢你的帮助。在</p> <p>下面是完整的示例代码:</p> <pre><code>#include <Python/Python.h> #include <Python/unicodeobject.h> int main(int argc, char *argv[]) { PyObject *pName, *pModule, *pDict, *pFunc; PyObject *pArgs, *pValue; int i; if (argc < 3) { fprintf(stderr,"Usage: call pythonfile funcname [args]\n"); return 1; } Py_Initialize(); pName = PyUnicode_DecodeFSDefault(argv[1]); // pName = PyUnicode_FromString(argv[1]); <-- also gives me an error /* Error checking of pName left out */ pModule = PyImport_Import(pName); Py_DECREF(pName); if (pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, argv[2]); /* pFunc is a new reference */ if (pFunc && PyCallable_Check(pFunc)) { pArgs = PyTuple_New(argc - 3); for (i = 0; i < argc - 3; ++i) { pValue = PyLong_FromLong(atoi(argv[i + 3])); if (!pValue) { Py_DECREF(pArgs); Py_DECREF(pModule); fprintf(stderr, "Cannot convert argument\n"); return 1; } /* pValue reference stolen here: */ PyTuple_SetItem(pArgs, i, pValue); } pValue = PyObject_CallObject(pFunc, pArgs); Py_DECREF(pArgs); if (pValue != NULL) { printf("Result of call: %ld\n", PyLong_AsLong(pValue)); Py_DECREF(pValue); } else { Py_DECREF(pFunc); Py_DECREF(pModule); PyErr_Print(); fprintf(stderr,"Call failed\n"); return 1; } } else { if (PyErr_Occurred()) PyErr_Print(); fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]); } Py_XDECREF(pFunc); Py_DECREF(pModule); } else { PyErr_Print(); fprintf(stderr, "Failed to load \"%s\"\n", argv[1]); return 1; } Py_Finalize(); return 0; } </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>这个问题贴出来已经很久了,但是我想出的解决办法是:</p> <pre><code>char * full_cls_name = argv[1]; Py_Initialize(); pName = PyString_FromString(full_cls_name); </code></pre> <p>您还应该检查argv[1]是否存在?在</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
5 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
1 回答
在Python3中使用Script=argv
4 回答
在python3中使用selenium webdriver进行未解析的回溯
2 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
3 回答
在Python3中使用Selenium和Requests模块从网页获取文件
6 回答
在python3中使用SIGINT终止函数
2 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
8 回答
在python3中使用smtplib发送XML内容
10 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
1 回答
在python3中使用sounddevice和numpy编写wav文件
9 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
1 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
5 回答
在python3中使用SQLite的FTS3/4
4 回答
在Python3中使用struct.calcsize()和len()有区别吗?
1 回答
在python3中使用substring函数时发生TypeError
8 回答
在Python3中使用Tkinter entry小部件写入串行设备
2 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
1 回答
在python3中使用tkinter的子帧
9 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
9 回答