2

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

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;
}

The application was unable to start correctly (0xc0000005). Click OK to close the application.虽然这里失败并在执行之前显示 MessageBox main(因此没有断点可能)。

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;
}
4

3 回答 3

1

所以问题似乎如下:我正在链接,python3.lib但由于字符串函数在 Python3.3 中完全过度工作,因此正确链接它们似乎存在一些问题。(无法真正解释为什么会这样,因为PyUnicode_FromString在早期版本的 python3 中也明显存在)。

为什么我无法收到关于该事实的有用错误消息也超出了我的范围,但我们开始了:linking againstpython33.lib完美地解决了问题。

于 2013-06-17T17:56:24.583 回答
0

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

于 2013-06-18T01:23:11.827 回答
0

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

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

您需要将我们的常量字符串“test”设为“test\0”,以使其为空终止。如果这不起作用,则可能与 c 文件是 ansi 而不是 utf8 的事实有关。

于 2013-06-17T17:09:07.553 回答