我試圖延長Python 3的使用說明書規定here和我相當有信心,我按照說明正確,到目前爲止,但它要求我有這個代碼:擴展Python 3與C++
PyMODINIT_FUNC
PyInit_spam(void)
{
PyObject *m;
m = PyModule_Create(&spammodule);
if (m == NULL)
return NULL;
SpamError = PyErr_NewException("spam.error", NULL, NULL);
Py_INCREF(SpamError);
PyModule_AddObject(m, "error", SpamError);
return m;
}
我在MSVC++ 2010中編寫它,它警告我& spammodule是未定義的(模塊的名稱是spammodule.cpp),但它沒有在指令中的任何地方定義它,所以我假設它應該識別它自動作爲模塊的名稱。
完整的代碼是:
#include <Python.h>
#include <iostream>
using namespace std;
static PyObject *SpamError;
int main()
{
cout << "Test" << endl;
system("PAUSE");
return(0);
}
static PyObject *spam_system(PyObject *self, PyObject *args)
{
const char *command;
int sts;
if (!PyArg_ParseTuple(args, "s", &command))
return NULL;
sts = system(command);
return PyLong_FromLong(sts);
}
PyMODINIT_FUNC
PyInit_spam(void)
{
PyObject *m;
m = PyModule_Create(&spammodule);
if (m == NULL)
return NULL;
SpamError = PyErr_NewException("spam.error", NULL, NULL);
Py_INCREF(SpamError);
PyModule_AddObject(m, "error", SpamError);
return m;
}
在C++中沒有這樣的模塊。在繼續之前,您可能會想重新開始閱讀一本優秀的C++書籍,您將爲自己節省很多挫折。 – 2012-02-24 23:41:22
@SethCarnegie,他使用Python C API,所以C編程語言(第二版)應該足夠了。 – 2012-02-24 23:43:13
我將在大學學習C++下一學期,儘管目前我在Python中完成一個項目的時間有限,所以我沒有太多時間學習C++,但謝謝。 – Tagc 2012-02-24 23:54:34