1) 실행 파일 프로젝트에 리소스 스크립트 파일을 추가하십시오. 리소스 컴파일러를 사용하여 RES 파일에
IDR_DLL_BIN BINARY MOVEABLE PURE “..\\debug\\myextern.dll”
2) 컴파일 RC 파일 : Visual Studio를 사용하는 경우
rc.exe /fo ”Release/mydll.res” “.\mydll.rc”
, 그것은 RES 파일을 작성하고 또한 실행에 바인딩됩니다.
3) 찾기 및 실행에서 리소스를로드 : 나는 위의 코드를 실행 한 후에 포인트를 lpAddress 메모리 공간에 기록 원본 DLL을 일단
bool ExtractResource(const HINSTANCE hInstance, WORD resourceID, LPCTSTR szFilename)
{
bool bSuccess = false;
try
{
// Find and load the resource
HRSRC hResource = FindResource(hInstance, MAKEINTRESOURCE(resourceID), _T(“BINARY”));
HGLOBAL hFileResource = LoadResource(hInstance, hResource);
// Open and map this to a disk file
LPVOID lpFile = LockResource(hFileResource);
DWORD dwSize = SizeofResource(hInstance, hResource);
// Open the file and filemap
HANDLE hFile = CreateFile(szFilename, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
HANDLE hFileMap = CreateFileMapping(hFile, NULL, PAGE_READWRITE, 0, dwSize, NULL);
LPVOID lpAddress = MapViewOfFile(hFileMap, FILE_MAP_WRITE, 0, 0, 0);
// Write the file
CopyMemory(lpAddress, lpFile, dwSize);
// Un-map the file and close the handles
UnmapViewOfFile(lpAddress);
CloseHandle(hFileMap);
CloseHandle(hFile);
}
catch(…)
{
// Whatever
}
return bSuccess;
}
어떻게 메소드를 호출하는 lpAddress를 사용합니까 나는 필요하다? 내 app-dev 헤드에 도움이 필요하다. – rtischer8277