So rufen Sie Python-Code mit CPP-Code in Microsoft Visual Studio auf

Cpp ruft Python-Code in Microsoft Visual Studio auf

In diesem Artikel wird beschrieben, wie Sie Python-Code beim Entwickeln von CPP-Projekten in Microsoft Visual Studio aufrufen.



Vorwort

Wenn Sie Microsoft Visual Studio zum Entwickeln von CPP-Projekten verwenden, müssen Sie manchmal einen Python-Teil des Codes verwenden. In diesem Artikel wird erläutert, wie Python-Code in zwei Szenarien aufgerufen wird: Das CPP-Projekt generiert eine Exe-Datei und das CPP-Projekt generiert eine DLL-Datei mit dynamischen Linkbibliotheken.


1. Cpp generiert eine exe-Datei

1.1 Installieren Sie die Python-Umgebung

Es ist erwähnenswert, dass Sie versuchen sollten, die virtuelle Conda-Umgebung nicht zu verwenden, da die virtuelle Umgebung viele unvollständige Dateien enthält. Hier verwenden wir zur Installation das von der offiziellen Python-Website heruntergeladene Python-Installationsprogramm.
Denken Sie daran, die Systemvariablenumgebung nach der Installation zu konfigurieren. Auf diese Weise wird beispielsweise unsere neu installierte Umgebung erst nach Ausführung des pip-Befehls aktualisiert.
Ich habe die Python 3.6-Version installiert, Download-Adresse

Fügen Sie hier eine Bildbeschreibung ein
Denken Sie nach Abschluss des Downloads daran, in der Popup-Installationsoption einen benutzerdefinierten Pfad auszuwählen und ihn der Systemvariablenumgebung hinzuzufügen.

1.2 Konfigurieren Sie Microsoft Visual Studio

Mein Python-Installationspfad ist D:\Users\ASUS\Python\Python36\libs
Klicken Sie auf das Feld „Projekteigenschaften“ und konfigurieren Sie es wie folgt
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein

Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung einFügen Sie hier eine Bildbeschreibung ein

1.3 Schreiben Sie CPP-Aufrufe in Python-Code

Py_Initialize();
if (!Py_IsInitialized())
{
    
    
	printf("初始化失败!");
	return;
}
Py_Finalize();

2. Die Situation beim Generieren einer dynamischen Linkbibliothek

Diese Situation ist die gleiche wie bei der Konfiguration und Code-Schreibmethode im ersten Teil oben.
Was beachtet werden muss, ist die Version von Python. Wenn die Versionen inkonsistent sind, wird ein Fehler gemeldet. Beispielsweise generiert unser CPP-Code schließlich eine.dll-Datei, die von b.exe geladen und verwendet wird. Wenn die von b.exe verwendete Python-Version 3.6 ist (sie verfügt über python3.6.dll) und unsere a.dll für die Kompilierung auf python3.7 angewiesen ist, wird ein Fehler gemeldet.

3. Inkompatibilitätsprobleme, die durch die gleichzeitige Entwicklung von QT und <Python.h> verursacht werden.

PyType_Slot *slots tritt auf, wenn Python in eine QT-Umgebung integriert wird; Konfliktproblem
Lösung:

typedef struct{     
 
      const char* name;     
 
      int basicsize;    
 
       int itemsize;     
 
      unsigned int flags;
 
      #undef slots     //这里取消slots宏定义
 
       PyType_Slot *slots;  /* terminated by slot==0. */
 
      #define slots Q_SLOTS  //这里恢复slots宏定义与QT中QObjectDefs.h中一致
 
  } PyType_Spec; 

Guess you like

Origin blog.csdn.net/qq_48081868/article/details/134066942