DLL에서 함수를 동적으로 로드
질문:
LoadLibrary 핸들을 어떻게 사용할 수 있나요? 에 정의된 함수에 액세스하려면 DLL?
LoadLibrary는 DLL을 메모리에 로드하지만 해당 기능을 자동으로 가져오지는 않습니다. 이를 위해서는 두 번째 WinAPI 함수가 필요합니다: GetProcAddress.
예:
#include <windows.h> #include <iostream> typedef int (__stdcall *f_funci)(); int main() { HINSTANCE hGetProcIDDLL = LoadLibrary("C:\Documents and Settings\User\Desktop\test.dll"); if (!hGetProcIDDLL) { std::cout << "could not load the dynamic library" << std::endl; return EXIT_FAILURE; } // Resolve function address using GetProcAddress f_funci funci = (f_funci) GetProcAddress(hGetProcIDDLL, "funci"); if (!funci) { std::cout << "could not locate the function" << std::endl; return EXIT_FAILURE; } std::cout << "funci() returned " << funci() << std::endl; // Free the library handle when no longer needed FreeLibrary(hGetProcIDDLL); return EXIT_SUCCESS; }
Dll 내보내기:
기능을 확인하세요. __declspec(dllexport) 및 __stdcall을 사용하여 DLL에서 올바르게 내보내졌습니다. 속성:
int __declspec(dllexport) __stdcall funci() { // ... }
위 내용은 LoadLibrary 및 GetProcAddress를 사용하여 DLL 함수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!