首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将Python嵌入到C中

将Python嵌入到C中
EN

Stack Overflow用户
提问于 2013-06-18 01:00:42
回答 3查看 315关注 1票数 2

Win7 x64,Python3.3 32位,Visual Studio2010/2012(行为相同)。下面的代码编译和运行良好(即打印当前日期):

代码语言:javascript
运行
复制
extern "C"{ // not having it doesn't make any difference either
#include <Python.h>
}

int main() {
    Py_Initialize();
    PyRun_SimpleString("from time import time,ctime\n"
        "print('Today is', ctime(time()))\n");
    Py_Finalize();
    return 0;
}

而这在这里失败了,因为在执行main之前,MessageBox显示The application was unable to start correctly (0xc0000005). Click OK to close the application. (所以不可能有断点)。

代码语言:javascript
运行
复制
extern "C"{ // not having it doesn't make any difference either
#include <Python.h>
}

int main() {
    Py_Initialize();
    PyObject *p = PyUnicode_FromString("test");
    Py_Finalize();
    return 0;
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-18 01:56:25

所以问题看起来是这样的:我在链接python3.lib,但是由于字符串函数在Python3.3中完全被过度使用了,所以在正确链接它们时似乎出现了一些问题。(不能真正解释为什么会这样,因为在python3的早期版本中也明显存在PyUnicode_FromString )。

为什么我不能得到关于这个事实的有用的错误消息,这也是我无法理解的,但就这样吧:针对python33.lib的链接完美地解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-06-18 01:09:08

我认为这可能有两个原因,但我很确定是这个原因:

http://docs.python.org/2/c-api/unicode.html

您需要将常量字符串"test“设为"test\0”,从而使其为空。如果这不起作用,可能是因为c文件是ansi而不是utf8。

票数 0
EN

Stack Overflow用户

发布于 2013-06-18 09:23:12

您的损坏程序链接到使用UCS-2作为内部unicode表示的Python构建,但安装的Python使用UCS-4,因此无法解析PyUnicodeUCS2_*导入。相反,您需要链接到UCS-4构建。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17152909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档