c++ - 是否可以使用 cmake 将二进制文件作为资源插入 VS 项目?
问题描述
我尝试构建 exe,它将显示编译成 exe 的静态 bmp 图像。但我不能这样做,因为预处理器在以下 winapi 代码中找不到文件的定义:
case WM_PAINT :
hDC = BeginPaint(hWnd, &PaintStruct);
hBitmap = LoadImage(NULL, MAKEINTRESOURCE(IDI_SPLASH), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
CMakeLists.txt:
project(number1)
set (R_DIR "/res")
set(CMAKE_MFC_FLAG 1)
add_executable(main WIN32 src/main.cpp res/r.rc)
set_target_properties(main PROPERTIES RESOURCE /res/splash.bmp)
资源库:
IDI_SPLASH BITMAP "sample.bmp"
在 Visual Studio 资源查看器中打开 bmp 文件,但使用双配额 ("IDI_SPLASH") 命名。
Ps 对不起,但英语不是我的母语
解决方案
根据 IInspectable 的回答,我添加了 resource.h:
#define IDI_SPLASH 101 //or other number id.
这个头文件我已经包含在源文件 (.cpp) 和 resource.rc 中。资源文件中的 include 命令与源文件中的相同:
#include "resource.h"
IDI_SPLASH BITMAP "sample.bmp"
有用 :)
推荐阅读
- python - Python 的 ADT 优先级队列
- swift - 为什么迁移后 Realm 的架构版本会重置为 0?
- php - PHP array_sum 输出单个数字而不是整体
- typescript - 使用 Typescript 但没有 Webpack/ts-loader 的 Vue 类型检查
- python-3.x - os.path.join 在某些情况下给出不正确的输出
- python - 各种 python 安装的 pip3 列表
- java - 使用 Apache Camel 并行处理多个文件
- amazon-web-services - AWS Cognito 基于角色的授权
- swift - 使用 UserDefaults 保存复选框选中或取消选中 swift
- java - 将 Map 的 Map 更改为泛型