Bagikan melalui


LoadLibrary dan AfxLoadLibrary

Proses memanggil LoadLibrary atau LoadLibraryEx untuk secara eksplisit menautkan ke DLL. (Penggunaan aplikasi MFCAfxLoadLibrary atau AfxLoadLibraryEx.) Jika fungsi berhasil, fungsi memetakan DLL yang ditentukan ke ruang alamat proses panggilan, dan mengembalikan handel ke DLL. Handel diperlukan dalam fungsi lain yang digunakan untuk penautan eksplisit—misalnya, GetProcAddress dan FreeLibrary. Untuk informasi selengkapnya, lihat Penautan eksplisit.

LoadLibrary mencoba menemukan DLL dengan menggunakan urutan pencarian yang sama yang digunakan untuk penautan implisit. LoadLibraryEx memberi Anda lebih banyak kontrol atas urutan jalur pencarian. Untuk informasi selengkapnya, lihat Urutan Pencarian Pustaka Dynamic Link. Jika sistem tidak dapat menemukan DLL atau jika fungsi titik masuk mengembalikan FALSE, LoadLibrary mengembalikan NULL. Jika panggilan untuk LoadLibrary menentukan modul DLL yang sudah dipetakan ke ruang alamat proses panggilan, fungsi mengembalikan handel DLL dan meningkatkan jumlah referensi modul.

Jika DLL memiliki fungsi titik masuk, sistem operasi memanggil fungsi dalam konteks utas yang disebut LoadLibrary atau LoadLibraryEx. Fungsi titik entri tidak dipanggil jika DLL sudah dilampirkan ke proses. Itu terjadi ketika panggilan sebelumnya ke LoadLibrary atau LoadLibraryEx untuk DLL belum memiliki panggilan yang sesuai ke FreeLibrary fungsi.

Untuk aplikasi MFC yang memuat DLL ekstensi MFC, kami sarankan Anda menggunakan AfxLoadLibrary atau AfxLoadLibraryEx alih-alih LoadLibrary atau LoadLibraryEx. Fungsi MFC menangani sinkronisasi utas sebelum memuat DLL secara eksplisit. Antarmuka (prototipe fungsi) ke AfxLoadLibrary dan AfxLoadLibraryEx sama dengan LoadLibrary dan LoadLibraryEx.

Jika Windows tidak dapat memuat DLL, proses Anda dapat mencoba memulihkan dari kesalahan. Misalnya, ini dapat memberi tahu pengguna tentang kesalahan, lalu meminta jalur lain ke DLL.

Penting

Pastikan untuk menentukan jalur lengkap DLL apa pun. Direktori saat ini dapat dicari terlebih dahulu ketika file dimuat oleh LoadLibrary. Jika Anda tidak sepenuhnya memenuhi syarat jalur file, file selain yang dimaksudkan mungkin dimuat. Saat Anda membuat DLL, gunakan opsi penghubung /DEPENDENTLOADFLAG untuk menentukan urutan pencarian untuk dependensi DLL yang ditautkan secara statis. Dalam DLL Anda, gunakan kedua jalur lengkap untuk memuat dependensi yang dimuat secara eksplisit, dan LoadLibraryEx atau AfxLoadLibraryEx parameter panggilan untuk menentukan urutan pencarian modul. Untuk informasi selengkapnya, lihat Keamanan Pustaka Dynamic-Link dan Urutan Pencarian Pustaka Dynamic Link.

Apa yang ingin Anda lakukan?

Apa yang ingin Anda ketahui lebih lanjut?

Baca juga