728x90
반응형
아래는 mdsn에서 제공하는 dynamic linking 예제이다.
평소에 아무 생각없이 잘 사용하다가 갑자기 GetProcAddress에서 계속해서 NULL이 Return 된다.
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
함수이름도 매개변수 형식도 모두 맞지만 계속해서 NULL이 반환 되었다.
그래서 이것저것 테스트해 본결과 namespace 안에 있는 함수를 가져 오지 못하는 것이었다.
그럼, 함수 이름 앞에 네임스페이스::함수 이렇게 하면 동작할려나.. @_@
왜 당연히 읽어 올거라고 생각한걸까.. 네임스페이스 안은 완전 다른 세상인데...
// A simple program that uses LoadLibrary and
// GetProcAddress to access myPuts from Myputs.dll.
#include <windows.h>
#include <stdio.h>
typedef int (__cdecl *MYPROC)(LPWSTR);
int main( void )
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary(TEXT("MyPuts.dll"));
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
// If the function address is valid, call the function.
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
(ProcAdd) (L"Message sent to the DLL function\n");
}
// Free the DLL module.
fFreeResult = FreeLibrary(hinstLib);
}
// If unable to call the DLL function, use an alternative.
if (! fRunTimeLinkSuccess)
printf("Message printed from executable\n");
return 0;
}
728x90
반응형
'Program Language > C & C++' 카테고리의 다른 글
[C++] explicit 키워드 (0) | 2021.10.01 |
---|---|
[C++] thread에서 return 값 받기 (promise/future) (2) | 2021.09.30 |
[C++] std::string ↔ std::wstring (0) | 2021.06.09 |
[C++] Implicit Linking/Explicit Linking 장단점 (0) | 2021.04.09 |
[C++] 타입추론 decltype(auto) (0) | 2021.04.09 |