我正在将cpython和v8嵌入到一起,并在通过PyDateTime
将javascript数据转换为PyDateTime_FromTimestamp
时遇到段错误:
Handle<Date> date = Handle<Date>::Cast(value);
printf("%d\n", 8);
PyObject* floatObj = PyFloat_FromDouble(date->NumberValue());
printf("%d\n", 9);
printf("%d\n", floatObj);
PyObject* timeTuple = Py_BuildValue("(O)", floatObj);
Py_DECREF(floatObj);
printf("%d\n", 10);
PyObject* dateTime = PyDateTime_FromTimestamp(timeTuple);
printf("%d\n", 11);
Py_DECREF(timeTuple);
printf("%d\n", 12);
运行时我得到以下输出:
8
9
14709864
10
[1] 33794 segmentation fault
任何洞察为什么timeTuple
似乎导致PyDateTime_FromTimestamp
错误?
字符串,数字,布尔值,数组,字符串等的转换都可以正常工作。
回答我自己的问题:
看来PyDateTime_IMPORT;
宏需要从你将调用PyDateTime_FromTimestamp
的同一个文件中调用。我之前在调用Py_Initialize
后直接在另一个文件中调用它。