导入C ++ DLL在Python中失败

按照“扩展和embeddedPython解释器”中的文档,我创build了一个VC项目,并成功创build了一个名为“spam_d.dll”的dll文件

主要代码是

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 Py_BuildValue("i", sts); } static PyMethodDef SpamMethods[] = { {"system", spam_system, METH_VARARGS, "Execute a shell command."}, {NULL, NULL, 0, NULL} /* Sentinel */ }; PyMODINIT_FUNC initspam(void) { (void) Py_InitModule("spam", SpamMethods); } 

然后我在python中input以下命令:

导入垃圾邮件[39003 refs] spam.system(“pwd”)/ SVN / Python / PCbuild 0 [39005 refs]

它看起来工作正常。 但是,当我将dll名称从spam_d.pyd重命名为spam.pyd。 Python找不到该模块。

 >>> import spam Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named spam [39005 refs] 

从第一种情况看,python可以正确设置“import spam”和“spam_d.pyd”之间的关系。

python如何知道“垃圾邮件”模块是“spam_d.pyd”,而不是“spam.pyd”?

有没有任何文件提到它。

python试图链接到后缀为_d.pyd的调试库,因为它是一个Debug版本。 要链接aganist spam.pyd,你需要一个发布版本。