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
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk