Eine dynamische Bibliothek ist eine Bibliotheksdatei, die geladen wird, wenn das Programm ausgeführt wird, und nicht die Größe des Programms selbst einnimmt.
Wählen Sie das dynamische Bibliotheksprojekt aus:
Erstellen Sie neue .h- und .cpp-Dateien:
# cat.h #pragma once extern "C" _declspec(dllexport) int sum(int a, int b);
# cat.cpp #include "pch.h" #include "cat.h" extern "C" _declspec(dllexport) int sum(int a, int b) { return a + b; }
Wählen Sie die Release-Version für die dynamische Bibliotheksfreigabe.
Erstellen Sie ein neues leeres C++-Projekt, kopieren Sie die .lib- und .dll-Dateien im dynamischen Bibliotheksprojekt in das aktuelle Projekt:
Fügen Sie im C++-Projekt die hinzu dynamische Bibliothek Die Header-Datei muss nicht in das aktuelle Projekt kopiert werden. Fügen Sie einfach das vorhandene Element hinzu. Es muss hier nur logisch eingeführt werden, aber der Pfad zur .h-Datei muss verwendet werden, wenn #include, sowohl absolut als auch relativ Wege sind akzeptabel.
#include #include "../../CATDLL/CATDLL/cat.h" using namespace std; #pragma comment(lib, "CATDLL.lib") int main() { cout << sum(1, 2) << endl; return 0; }
kann auch in Project-Properties-Linker-Input-Additional Dependencies konfiguriert werden:
kann weggelassen werden: #pragma comment(lib, "CATDLL.lib")
#include #include using namespace std; typedef int (*PSUM)(int, int); int main() { HMODULE hMoudle = LoadLibrary(TEXT("CATDLL.dll")); PSUM psum = (PSUM)GetProcAddress(hMoudle, "sum"); cout << psum(4, 5) << endl; FreeLibrary(hMoudle); return 0; }
Da die C++-DLL 64-Bit ist, muss Python auch 64-Bit verwenden.
import os from ctypes import * os.chdir("D:Cat课件CAT_CODINGC++项目开发MFC进阶和动态库注入辅助PYTEST") dll = cdll.LoadLibrary("CATDLL.dll") ret = dll.sum(1, 2) print(ret)
Auf diese Weise können viele häufig verwendete Funktionen mit C++ in dynamische Bibliotheken umgewandelt und von anderen Sprachen wie C++ oder Python aufgerufen werden.
Das obige ist der detaillierte Inhalt vonZwei Möglichkeiten für C++, dynamische Bibliotheken aufzurufen, und Python, um dynamische C++-Bibliotheken aufzurufen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!