Kompilieren von Python zu einer statischen lib und mit pythoncore.lib

8

Ich versuche Python 2.7 als statische einzelne .lib-Datei zu erstellen.

Ich habe bereits folgende Änderungen am Python-Quellcode vorgenommen:

  1. Wechseln Sie in den "Freigabemodus".
  2. Ändern Sie alle DLL-Projekte in die statische Bibliothek (.lib) und setzen Sie die Laufzeitbibliothek auf / MT
  3. Hinzufügen der Präprozessordefinition Py_NO_ENABLE_SHARED zu Python und Pythoncore

Ich habe es geschafft, das Pythoncore-Projekt in pythoncore.lib zu kompilieren (ungefähr 11 MB groß), aber beim Versuch, das Python-Projekt zu kompilieren, bekomme ich die folgenden Verbindungsfehler:

  

Fehler LNK2019: nicht aufgelöstes externes Symbol __Py_ActivateActCtx, auf das in der Funktion __PyImport_GetDynLoadFunc verwiesen wird C: \ Python-2.7.3_Source \ PCbuild \ pythoncore.lib (dynload_win.obj)       Fehler LNK2019: nicht aufgelöstes externes Symbol __Py_DeactivateActCtx, auf das in der Funktion __PyImport_GetDynLoadFunc verwiesen wird C: \ Python-2.7.3_Source \ PCbuild \ pythoncore.lib (dynload_win.obj)       Fehler LNK2019: nicht aufgelöstes externes Symbol __Py_hgidentifier, auf das in der Funktion __PySys_Init verwiesen wird C: \ Python-2.7.3_Source \ PCbuild \ pythoncore.lib (sysmodule.obj)       Fehler LNK2019: nicht aufgelöstes externes Symbol __Py_hgversion, auf das in der Funktion __PySys_Init verwiesen wird C: \ Python-2.7.3_Source \ PCbuild \ pythoncore.lib (sysmodule.obj)       Fehler LNK2019: nicht aufgelöstes externes Symbol _Py_GetBuildInfo, das in der Funktion _Py_GetVersion C: \ Python-2.7.3_Source \ PCbuild \ pythoncore.lib (getversion.obj)

referenziert wird

Kann mir jemand helfen?

Danke,

Idan

-------------------- Aktualisierung -------------------------- -----------

Ich habe es gerade geschafft, es zum Laufen zu bringen. Wenn es jemandem hilft, sind das die Änderungen, die ich gemacht habe: 1) Fügen Sie Module \ getbuildinfo.c zum Pythoncore-Projekt hinzu 2) In PC \ dl_nt.c verschieben Sie diese Zeile "#ifdef Py_ENABLE_SHARED" von Zeile 14 in Zeile 79 (direkt über DllMain)

und das ist es!

Sie können jetzt eine Verbindung zu pythoncore.lib herstellen:)

Idan

    
Idan 26.11.2012, 14:47
quelle

0 Antworten