Compiling Python to a static lib and using pythoncore.lib

旧巷老猫 提交于 2019-12-05 19:02:29

问题


I'm trying to build Python 2.7 as a static single .lib file.

I've already made the following changes to the Python source code:

  1. Change to "Release" mode.
  2. Change all DLL projects to Static library (.lib) and set runtime library to /MT
  3. Add preprocessor definition Py_NO_ENABLE_SHARED to python and pythoncore

I've managed to compile the pythoncore project to pythoncore.lib (about 11mb size), but when trying to compile the python project I get the following linking errors:

error LNK2019: unresolved external symbol __Py_ActivateActCtx referenced in function __PyImport_GetDynLoadFunc C:\Python-2.7.3_Source\PCbuild\pythoncore.lib(dynload_win.obj) error LNK2019: unresolved external symbol __Py_DeactivateActCtx referenced in function __PyImport_GetDynLoadFunc C:\Python-2.7.3_Source\PCbuild\pythoncore.lib(dynload_win.obj) error LNK2019: unresolved external symbol __Py_hgidentifier referenced in function __PySys_Init C:\Python-2.7.3_Source\PCbuild\pythoncore.lib(sysmodule.obj) error LNK2019: unresolved external symbol __Py_hgversion referenced in function __PySys_Init C:\Python-2.7.3_Source\PCbuild\pythoncore.lib(sysmodule.obj) error LNK2019: unresolved external symbol _Py_GetBuildInfo referenced in function _Py_GetVersion C:\Python-2.7.3_Source\PCbuild\pythoncore.lib(getversion.obj)

Can anyone help me?

Thanks,

Idan

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

I just managed to make it work.. if it would help anyone, these are the changes I made:

  1. Add Modules\getbuildinfo.c to the pythoncore project.
  2. In PC\dl_nt.c move this line #ifdef Py_ENABLE_SHARED from line 14 to line 79 (just above DllMain).

... and that's it!

You may now link to pythoncore.lib :)

Idan

来源:https://stackoverflow.com/questions/13567210/compiling-python-to-a-static-lib-and-using-pythoncore-lib

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!