Pustaka dinamik ialah fail pustaka yang dimuatkan semasa atur cara berjalan dan tidak menempati saiz program itu sendiri.
Pilih projek perpustakaan dinamik:
Buat fail .h dan .cpp baharu:
# 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; }
Pilih versi Keluaran untuk keluaran perpustakaan dinamik Contoh ini menggunakan ×64 bit.
Buat projek C++ kosong baharu dan salin fail .lib dan .dll dalam projek perpustakaan dinamik ke semasa projek :
Dalam projek C++, apabila menambah fail pengepala perpustakaan dinamik, anda tidak perlu menyalinnya ke projek semasa, cuma tambah item yang sedia ada hanya perlu diperkenalkan secara logik di sini, tetapi Apabila #include, gunakan laluan fail .h kedua-dua laluan mutlak dan relatif boleh diterima.
#include #include "../../CATDLL/CATDLL/cat.h" using namespace std; #pragma comment(lib, "CATDLL.lib") int main() { cout << sum(1, 2) << endl; return 0; }
juga boleh dikonfigurasikan dalam Project-Properties-Linker-Input-Additional Dependencies:
boleh diabaikan: #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; }
Memandangkan C++ dll adalah 64-bit, Python juga memerlukan Penggunaan 64 bit.
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)
Dengan cara ini, banyak fungsi yang biasa digunakan boleh dijadikan perpustakaan dinamik menggunakan C++, yang boleh dipanggil oleh bahasa lain seperti C++ atau Python.
Atas ialah kandungan terperinci Dua cara untuk C++ memanggil perpustakaan dinamik dan Python untuk memanggil perpustakaan dinamik C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!