导入C ++ DLL在Python中失败了

时间:2010-03-31 09:14:52

标签: python windows

在“扩展和嵌入Python解释器”中的文档之后,我创建了一个VC项目,并成功创建了一个名为“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中输入以下命令:

  
    
      

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

    
  

看起来工作正常。 但是当我将垃圾邮件名称从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”?

有没有文件提到它。

1 个答案:

答案 0 :(得分:1)

python尝试链接带有后缀_d.pyd的调试库,因为它是一个Debug构建。要链接aganist spam.pyd,您需要发布版本。