Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Fungsi Secara Dinamik daripada DLL dalam C?

Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Fungsi Secara Dinamik daripada DLL dalam C?

Susan Sarandon
Lepaskan: 2024-12-20 14:28:10
asal
415 orang telah melayarinya

How Can I Dynamically Load and Use Functions from a DLL in C  ?

Muat Secara Dinamik Fungsi daripada DLL

Pengenalan

Pautan dinamik membolehkan anda memuatkan fungsi daripada DLL semasa masa jalan, memanjangkan fungsi program anda. Artikel ini akan membimbing anda tentang cara untuk mencapainya.

Memuatkan DLL

Langkah pertama ialah memuatkan DLL ke dalam memori proses semasa. Ini dilakukan menggunakan fungsi LoadLibrary:

HINSTANCE hGetProcIDDLL = LoadLibrary("path/to/test.dll");
Salin selepas log masuk

Mendapatkan Alamat Fungsi

Setelah DLL dimuatkan, anda perlu mencari alamat fungsi yang ingin anda panggil. Untuk ini, kami menggunakan fungsi GetProcAddress:

typedef int (__stdcall *f_funci)();
f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
Salin selepas log masuk

Perhatikan bahawa anda perlu menentukan jenis penuding fungsi yang sepadan dengan tandatangan fungsi yang dieksport. Dalam kes kami, ia adalah fungsi yang mengembalikan integer dan tidak mengambil hujah.

Mengeksport Fungsi daripada DLL

Untuk DLL berjaya dimuatkan, anda perlu mengeksport fungsi dengan betul. Tambahkan yang berikut pada kod sumber DLL anda:

int __declspec(dllexport) __stdcall funci() {
  // ...
}
Salin selepas log masuk

Menggunakan Fungsi

Setelah alamat fungsi diperoleh, anda boleh memanggilnya seperti fungsi lain:

std::cout << "funci() returned " << funci() << std::endl;
Salin selepas log masuk

Melepaskan Pemegang DLL

Untuk pembersihan sumber, adalah amalan yang baik untuk melepaskan pemegang DLL apabila tidak diperlukan lagi:

FreeLibrary(hGetProcIDDLL);
Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh memuatkan dan menggunakan fungsi daripada DLL secara dinamik, meningkatkan fleksibiliti dan kebolehlanjutan program anda dengan ketara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memuatkan dan Menggunakan Fungsi Secara Dinamik daripada DLL dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan