【发布时间】:2021-07-30 12:10:20
【问题描述】:
我尝试构建 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)
res.rc:
IDI_SPLASH BITMAP "sample.bmp"
在 Visual Studio 资源查看器中打开 bmp 文件,但以双配额 ("IDI_SPLASH") 命名。
附:抱歉,但英语不是我的母语
【问题讨论】:
-
IDI_SPLASH标识符不会神奇地出现。您将不得不自己定义它(例如#define IDI_SPLASH 42)。这通常在源代码和资源脚本都包含的头文件中完成。 -
用
/开始一条路径似乎很奇怪。通常这意味着您指定从文件系统根目录开始的绝对路径,在这种情况下类似于C:/res/splash.bmp;还没有与RESOURCE合作过,所以我不能告诉你,这个属性是否有任何不同。 -
@fab “通常这意味着......” - 我不知道,你会将什么归为“通常*,但在 Windows 上,
/不会”没有任何意义。“文件系统根目录” - 在 Windows 上,这甚至意味着什么?这个问题是关于 CMake、Windows 资源脚本以及 Microsoft 的编译器和链接器。我怀疑你提供的任何东西都有对这些工具有任何影响。 -
@IInspectable 非常感谢!非常感谢您的帮助!
标签: c++ visual-studio winapi cmake resources