将Python编译为静态库并使用python core.library

时间:2012-11-26 14:47:31

标签: python static compilation python-2.7 static-libraries

我正在尝试将Python 2.7构建为静态单个.lib文件。

我已经对Python源代码进行了以下更改:

  1. 更改为“发布”模式。
  2. 将所有DLL项目更改为静态库(.lib)并将运行时库设置为/ MT
  3. 将预处理器定义Py_NO_ENABLE_SHARED添加到python和pythoncore
  4. 我设法将pythoncore项目编译为pythoncore.lib(大约11mb大小), 但是在尝试编译python项目时,我得到以下链接错误:

      

    错误LNK2019:函数__PyImport_GetDynLoadFunc C:\ Python-2.7.3_Source \ PCbuild \ pythoncore.lib(dynload_win.obj)中引用了未解析的外部符号__Py_ActivateActCtx       错误LNK2019:函数__PyImport_GetDynLoadFunc中引用的未解析的外部符号__Py_DeactivateActCtx C:\ Python-2.7.3_Source \ PCbuild \ pythoncore.lib(dynload_win.obj)       错误LNK2019:函数__PySys_Init中引用的未解析的外部符号__Py_hgidentifier C:\ Python-2.7.3_Source \ PCbuild \ pythoncore.lib(sysmodule.obj)       错误LNK2019:函数__PySys_Init中引用的未解析的外部符号__Py_hgversion C:\ Python-2.7.3_Source \ PCbuild \ pythoncore.lib(sysmodule.obj)       错误LNK2019:函数_Py_GetVersion中引用的未解析的外部符号_Py_GetBuildInfo C:\ Python-2.7.3_Source \ PCbuild \ pythoncore.lib(getversion.obj)

    任何人都可以帮助我吗?

    谢谢,

    伊詹

    -------------------- update -------------------------- -----------

    我只是设法使它工作..如果它可以帮助任何人,这些是我做的改变:

    1. Modules\getbuildinfo.c添加到pythoncore项目。
    2. PC\dl_nt.c中将此行#ifdef Py_ENABLE_SHARED从第14行移至第79行(在DllMain上方)。
    3. ......就是这样!

      您现在可以链接到pythoncore.lib:)

      伊詹

0 个答案:

没有答案