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:
- Change to "Release" mode.
- Change all DLL projects to Static library (.lib) and set runtime library to /MT
- 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:
- Add
Modules\getbuildinfo.c
to the pythoncore project. - 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