현재 프로그램(.exe) 및 동적 라이브러리(.dll)가 있는 경로 가져오기
BOOL CLicenseCtrlDlg::GetAppPath(void)
{
CString strAppPath; //
TCHAR szModuleFileName[MAX_PATH]; //
TCHAR drive[_MAX_DRIVE]; // , C ,D
TCHAR dir[_MAX_DIR]; //
TCHAR fname[_MAX_FNAME]; //
TCHAR ext[_MAX_EXT]; // , exe dll
if (NULL == GetModuleFileName(NULL, szModuleFileName, MAX_PATH)) //
{
AfxMessageBox(" !");
return FALSE;
}
_tsplitpath( szModuleFileName, drive, dir, fname, ext ); // , , , ,
m_ConfigPath = drive;
m_ConfigPath += dir;
return TRUE;
}
2. 현재 프로그램이 호출한test를 가져옵니다.dll 동적 라이브러리 위치 경로
//
HINSTANCE exe_hInstance = ::GetModuleHandle(NULL);
// dll
HINSTANCE dll_hInstance = ::GetModuleHandle(_T("PSDLib.dll"));
//
AfxSetResourceHandle(dll_hInstance);
//
AfxSetResourceHandle(exe_hInstance);
현재 프로그램의 경로 가져오기 방법에서 호출
GetModuleFileName(NULL, szModuleFileName, MAX_PATH))
시 첫 번째 매개 변수 선택 dllhinstance, 동적 라이브러리 경로 획득
3. 두 개의 동적 라이브러리 A와 B가 있는데 A는 B를 동적으로 호출했다. A에서 B로 파라미터를 전달하는 방법을 사용하지 않고 B에서 A의 경로를 어떻게 얻는가.
------------------------------GetModuleHandle("A")은 동적 라이브러리 A의handle을 획득한 다음,GetModuleFileName(A의handle,lpFileName,nSize)을 호출하면 됩니다------------------------------------------------GetModuleFileName()을 호출하여 A의 핸들을 전달하면 모듈 경로를 얻을 수 있습니다--------------------------------------------------------------------------------------------------------------------------------즉 함수가 호출하기 전에 호출자가 창고에 쌓인 되돌아오는 주소를 눌러준다는 것이다.이 주소에서 DLL 모듈 핸들을 가져옵니다.이 DLL 핸들을 기반으로 전체 경로를 가져옵니다.------------------------B.dll
#ifdef __cplusplus
extern "C"
#endif
void * _ReturnAddress(void);
#pragma intrinsic(_ReturnAddress)
int funB()
{
HMODULE hCaller = NULL;
TCHAR szModuleName[MAX_PATH];
void *pRetAddr = _ReturnAddress();
GetModuleHandleEx(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS, (LPCTSTR)pRetAddr, &hCaller);
GetModuleFileName(hCaller, szModuleName, _countof(szModuleName));
....
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.