C/C++如何将资源文件的内容build进exe里面

直接进入正文
目的:我在工程目录下面放置一个文件夹,把这个文件夹的内容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里面文件夹的解压

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VSCode中配置C/C++环境需要创建四个JSON文件,分别是c_cpp_properties.json、launch.json、settings.json和tasks.json。下面是对这四个文件的简要介绍: 1. c_cpp_properties.json:用于配置C/C++的编译器路径、头文件路径和库文件路径等信息。可以通过以下步骤创建: a. 打开VSCode,入工作区(或文件夹)。 b. 在左侧的资源管理器中,右键单击文件夹,选择“添加文件夹到工作区”。 c. 在文件夹中创建一个名为“.vscode”的文件夹。 d. 在“.vscode”文件夹中创建一个名为“c_cpp_properties.json”的文件。 e. 在“c_cpp_properties.json”文件中添加以下内容: ```json { "configurations": [ { "name": "Win32", "includePath": [ "${workspaceFolder}/**" ], "defines": [], "compilerPath": "C:/TDM-GCC-64/bin/gcc.exe", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "gcc-x64" } ], "version": 4 } ``` 2. launch.json:用于配置调试器的启动方式和参数等信息。可以通过以下步骤创建: a. 在“.vscode”文件夹中创建一个名为“launch.json”的文件。 b. 在“launch.json”文件中添加以下内容: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/a.out", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "C:/MinGW/bin/gdb.exe", "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ] } ``` 3. settings.json:用于配置VSCode的全局设置。可以通过以下步骤创建: a. 在“.vscode”文件夹中创建一个名为“settings.json”的文件。 b. 在“settings.json”文件中添加以下内容: ```json { "files.associations": { "*.c": "c", "*.h": "c" } } ``` 4. tasks.json:用于配置编译器的编译命令和参数等信息。可以通过以下步骤创建: a. 在“.vscode”文件夹中创建一个名为“tasks.json”的文件。 b. 在“tasks.json”文件中添加以下内容: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "gcc", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}" ], "group": { "kind": "build", "isDefault": true } } ] } ``` 以上是VSCode配置C/C++环境中四个JSON文件的简要介绍。如果需要更详细的配置信息,可以参考VSCode官方文档或者其他相关教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值