编译python3.2 C模块,链接器请求'python26.lib'

时间:2011-12-19 14:13:15

标签: c++ python

我正在尝试编译3.2源代码附带的示例visual studio解决方案。我按原样将目录复制到一个级别。我没有使用他们使用的相同的视觉工作室。

出于某种原因,我得到了这个:

1>LINK : fatal error LNK1181: cannot open input file 'python26.lib'

我不明白链接器(或大部分visual c ++)是如何工作的。但是我已经检查过include和library目录没有任何对于VS和项目看起来错误的东西。

任何人都可以帮助我理解和解决这个问题吗?

以下是示例模块源:

#include "Python.h"

static PyObject *
ex_foo(PyObject *self, PyObject *args)
{
    printf("Hello, world\n");
    Py_INCREF(Py_None);
    return Py_None;
}

static PyMethodDef example_methods[] = {
    {"foo", ex_foo, METH_VARARGS, "foo() doc string"},
    {NULL, NULL}
};

static struct PyModuleDef examplemodule = {
    PyModuleDef_HEAD_INIT,
    "example",
    "example module doc string",
    -1,
    example_methods,
    NULL,
    NULL,
    NULL,
    NULL
};

PyMODINIT_FUNC
PyInit_example(void)
{
    return PyModule_Create(&examplemodule);
}

1 个答案:

答案 0 :(得分:1)

我不会使用源附带的示例代码,您的项目设置必须在输入列表中包含Python26.lib。使用distutil更容易,这是一个Simple模块的setup.py:

from distutils.core import setup, Extension

module1 = Extension('Simple',
                    sources = ['Simple.c'])

setup (name = 'Simple',
       version = '1.0',
       description = 'This is a Simple package',
       ext_modules = [module1])

从已运行vcvarsall.bat的cmd.exe运行它,并在其路径中包含python。

但是,如果必须使用Visual Studio:

  1. 将Python库添加到项目中:python32.lib
  2. 将Python目录添加到项目C:\ Python32 \ include C:\ Python32 \ libs
  3. 请记住将链接器输出设置为.pyd文件。
  4. 输出目录应该是C:\ Python32 \ Lib \ site-packages,或者自己将生成的.pyd文件复制到site_packages