|
저 같은 경우도 가상머신에서 외부 함수들을 호출하는 프로그램을 많이 만드는데 .. 사악한레빗님 같은
경우는 일어나지 않는데요 ..
Return Values
If the function fails, the return value is NULL. To get extended error information, call GetLastError.
위와 같으LoadLibrary 함수의 도움말을 보니 .. NULL을 리턴 할 경우 GetLastError()를 이용하여 메세지를
보시면 어느정도 원인을 유추 할 수 있지 않을까 생각 됩니다.
아시겠지만 그래도 참고 하시라고 간단한 GetLastError()함수 에제는 아래에 첨부 해드립니다.
if ( CopyFileEx( SrcFile.c_str(), TrgFile.c_str(), CopyProgressRoutine, NULL, &b_cancel, NULL ) )
i_AddSize += pNow->Max;
else
{
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Display the string.
Application->MessageBoxA( (char *)lpMsgBuf, "파일 복사 에러!", MB_OK|MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
}
샤악한레빗 님이 쓰신 글 :
: 가상 머신 VMWare 맞고요...
:
: 툴을 주로 델파이를 쓰는지라...THandle로 선언해서 쓰다보니...
:
: 걍 핸들이라 생각하고 있었네요...
:
: 암튼 점한님이 써 주신거와 동일하게 되어 있습니다.
:
: HANDLE hDll;
: AnsiString sName = "파일명";
:
: if (!FileExists(sName))
: {
: LOG("파일없음.");
: return false;
: }
:
: hDll= LoadLibrary(sName.c_str());
: if (hDll == 0L)
: {
: LOG("로드실패.");
: return false;
: }
:
: 다를게 없죠...??
:
: 가상머신에 빌더까지 설치하고 디버깅 해봤는데요...
:
: LoadLibrary에서 NULL이 리턴되요...ㅠ_ㅠ
:
: 일반 PC에서는 잘되는데 저 가상머신에서만 안되는지라...
:
: 누구좀 도와주세요~~!
:
: 이점한 님이 쓰신 글 :
: : 가상 머신이라 함은 ? VMware 를 사용한거겠죠?
: : 저도 시스템 복구 프로그램 테스트 하느라 VMWare 자주 사용하는데
: : VMWare를 쓰던 리얼 머신을 쓰던 LoadLibrary() 함수는 정확하게 잘 동작합니다.
: :
: : 질문을 보니 LoadLibrary()의 리턴값을 핸들에 받는데 .. 핸들! 아니져~~ 인스탕쓰! 마씀니당~
: :
: : HINSTANCE hinst;
: :
: : if ( FileExists( LibName ) )
: : {
: : hinst = LoadLibrary( LibName .c_str() );
: : .....
: :
: : 위와 같이 쓰면 100% 정확하게 동작 할겁니다.
: :
: : 답변이 되셨는지 ?
: :
: :
: : 샤악한레빗 님이 쓰신 글 :
: : : 가상머신에서 프로그램을 실행해야 하는 일이 생겼습니다.
: : :
: : : 그런데 다른곳에서는 정상적으로 작동되던 것이
: : :
: : : 가상머신에서만 문제를 일으킵니다.
: : :
: : : 일단 FileExists로 DLL파일을 확인하고,
: : :
: : : handle = LoadLibrary(파일명);
: : :
: : : 하면 handle이 NULL로 나옵니다.
: : :
: : : 절대경로, 상대경로 다 입력해봤지만 소용없습니다.
: : :
: : : OS는 XP Pro이고요...혹시 경험 있으신분 답변 부탁드립니다.
|