Buat pustaka dinamik
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:

1 2 3 | # cat.h
#pragma once
extern "C" _declspec(dllexport) int sum(int a, int b);
|
Salin selepas log masuk
1 2 3 4 5 6 | # cat.cpp
# include "pch.h"
# include "cat.h"
extern "C" _declspec(dllexport) int sum(int a, int b) {
return a + b;
}
|
Salin selepas log masuk
Pilih versi Keluaran untuk keluaran perpustakaan dinamik Contoh ini menggunakan ×64 bit.
C++ import kaedah perpustakaan dinamik satu

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.

1 2 3 4 5 6 7 8 | # include
# include "../../CATDLL/CATDLL/cat.h"
using namespace std;
#pragma comment(lib, "CATDLL.lib" )
int main() {
cout << sum(1, 2) << endl;
return 0;
}
|
Salin selepas log masuk
- h Fail pengepala: Mengandungi maklumat seperti struktur data, kelas, fungsi dan maklumat lain yang diisytiharkan dan dikeluarkan dalam dll.
- fail perpustakaan lib: mengandungi nama dan lokasi projek yang dieksport oleh DLL Dalam fail boleh laku aplikasi yang memanggil dll, apa yang disimpan bukanlah kod fungsi yang dipanggil, tetapi projek yang akan dipanggil. dalam alamat memori DLL.
- pustaka dinamik dll: mengandungi kandungan sebenar Semasa menerbitkan, hanya fail .exe dan fail .dll diperlukan, dalam direktori yang sama.
juga boleh dikonfigurasikan dalam Project-Properties-Linker-Input-Additional Dependencies:

boleh diabaikan: #pragma comment( lib, "CATDLL.lib")
Kaedah perpustakaan dinamik import C++ dua
1 2 3 4 5 6 7 8 9 10 11 | # 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;
}
|
Salin selepas log masuk
Python mengimport perpustakaan dinamik C++
Memandangkan C++ dll adalah 64-bit, Python juga memerlukan Penggunaan 64 bit.
1 2 3 4 5 6 | 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)
|
Salin selepas log masuk
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!