直接进入正文
目的:我在工程目录下面放置一个文件夹,把这个文件夹的内容build到工程生成的.exe里面,在运行exe时将文件夹解压出来使用。
点击资源视图–右键添加资源–导入工程目录下将要build进去的文件夹。自己取一个名字,确定后在resource.h文件会产生一个ID.
通过资源ID找到对应文件
```cpp
if (ExtraceResourceFile(IDR_MMWAVE_NV1, mmWave_nv_zip_file, mmWave_NV_RESOURCE_TYPE))
{
if (PathFileExistsW(mmWave_nv_zip_file))
{
CComBSTR file(mmWave_nv_zip_file);
CComBSTR folder(dst_path);
if (Unzip2Folder(file, folder))
{
_wremove(mmWave_nv_zip_file);
result = true;
}
}
}
bool ExtraceResourceFile( uint16_t resource_id, TCHAR *output_file, TCHAR *type )
{
HINSTANCE hInstance = (::GetModuleHandleW(nullptr));
HRSRC hResource;
HGLOBAL hFileResource;
void *lpFile;
uint32_t dwSize;
HANDLE hFile, hFilemap;
void *lpBaseAddress;
bool result = false;
TCHAR file_path[MAX_PATH] = { 0 };
if ((hResource = FindResource( hInstance, MAKEINTRESOURCE(resource_id), type ) ) != nullptr )
{
if( ( hFileResource = LoadResource(nullptr, hResource)) != nullptr )
{
if ((lpFile = LockResource(hFileResource)) != nullptr)
{if ((dwSize = SizeofResource(nullptr, hResource)) > 0)
{
if ((hFile = CreateFile((LPCWSTR)output_file, GENERIC_READ | GENERIC_WRITE, 0, nullptr, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, nullptr)) != nullptr)
{
if ((hFilemap = CreateFileMapping(hFile, nullptr, PAGE_READWRITE, 0, dwSize, nullptr)) != nullptr)
{
lpBaseAddress = MapViewOfFile( hFilemap, FILE_MAP_WRITE, 0, 0, 0 );
CopyMemory( lpBaseAddress, lpFile, dwSize );
UnmapViewOfFile( lpBaseAddress );
result = true;
CloseHandle( hFilemap );
}
CloseHandle(hFile);
}
}
}
}
}
return result;
}
到此就完成了exe里面文件夹的解压