Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Mengimport dan Menggunakan Fungsi daripada DLL dalam C?

Bagaimanakah Saya Mengimport dan Menggunakan Fungsi daripada DLL dalam C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-14 05:41:09497semak imbas

How Do I Import and Use Functions from DLLs in C  ?

Mengimport Fungsi daripada DLL: Panduan Komprehensif

Memuatkan Dynamic Link Libraries (DLL) membolehkan program C anda menggunakan fungsi daripada perpustakaan kongsi luaran . Untuk mengakses fungsi dalam DLL, walau bagaimanapun, memerlukan pendekatan yang berbeza daripada mengimport fungsi daripada fail pengepala.

Memuatkan DLL dengan LoadLibrary

Fungsi LoadLibrary memuatkan DLL ke dalam ingatan proses semasa. Proses ini tidak mengimport secara automatik fungsi yang ditakrifkan dalam DLL.

Mendapatkan kembali Alamat Fungsi dengan GetProcAddress

Setelah DLL dimuatkan, anda perlu mendapatkan alamat fungsi yang anda ingin gunakan. Ini dilakukan menggunakan fungsi GetProcAddress.

#include <windows.h>

typedef int (__stdcall *f_funci)();  // Define function pointer type

int main() {
  HINSTANCE hGetProcIDDLL = LoadLibrary("...")

  // Retrieve function address
  f_funci funci = (f_funci)GetProcAddress(hGetProcIDDLL, "funci");
}

Dalam coretan kod di atas, kami mentakrifkan jenis penuding fungsi yang dipanggil f_funci yang mewakili fungsi yang ingin kami import. Fungsi GetProcAddress mengembalikan alamat fungsi dalam DLL.

Mengeksport Fungsi daripada DLL

Untuk memastikan pengeksportan fungsi yang betul daripada DLL, gunakan __declspec( dllexport) dan atribut __stdcall.

int __declspec(dllexport) __stdcall funci() {
   // ...
}

Atribut Atribut __declspec(dllexport) menunjukkan bahawa fungsi harus dieksport daripada DLL dan atribut __stdcall menentukan konvensyen panggilan yang digunakan oleh DLL.

Melepaskan Pemegang DLL

Selepas menggunakan fungsi yang diimport daripada DLL, adalah amalan yang baik untuk melepaskan pemegang ke perpustakaan. Ini dicapai menggunakan fungsi FreeLibrary.

FreeLibrary(hGetProcIDDLL);

Dengan mengikuti langkah ini, anda boleh memuatkan DLL secara dinamik dan mengakses fungsinya dalam C . Teknik ini memberi kuasa kepada anda untuk melanjutkan keupayaan program anda dengan menggunakan modul boleh guna semula tanpa memerlukan pemautan statik atau penyusunan semula.

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

Kenyataan:
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