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
Lepaskan: 2024-12-14 05:41:09
asal
494 orang telah melayarinya

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");
}
Salin selepas log masuk

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() {
   // ...
}
Salin selepas log masuk

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);
Salin selepas log masuk

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!

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