Win7 x64,Python3.3 32位,Visual Studio2010/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;
}而这在这里失败了,因为在执行main之前,MessageBox显示The application was unable to start correctly (0xc0000005). Click OK to close the application. (所以不可能有断点)。
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;
}发布于 2013-06-18 01:56:25
所以问题看起来是这样的:我在链接python3.lib,但是由于字符串函数在Python3.3中完全被过度使用了,所以在正确链接它们时似乎出现了一些问题。(不能真正解释为什么会这样,因为在python3的早期版本中也明显存在PyUnicode_FromString )。
为什么我不能得到关于这个事实的有用的错误消息,这也是我无法理解的,但就这样吧:针对python33.lib的链接完美地解决了这个问题。
发布于 2013-06-18 01:09:08
我认为这可能有两个原因,但我很确定是这个原因:
http://docs.python.org/2/c-api/unicode.html
您需要将常量字符串"test“设为"test\0”,从而使其为空。如果这不起作用,可能是因为c文件是ansi而不是utf8。
发布于 2013-06-18 09:23:12
您的损坏程序链接到使用UCS-2作为内部unicode表示的Python构建,但安装的Python使用UCS-4,因此无法解析PyUnicodeUCS2_*导入。相反,您需要链接到UCS-4构建。
https://stackoverflow.com/questions/17152909
复制相似问题