cmake 如何使用 rc 文件中的资源 [已关闭]

How cmake uses resources in rc files [closed]

提问人:MagicEmperor 提问时间:11/16/2023 最后编辑:MagicEmperor 更新时间:11/16/2023 访问量:41

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

6天前关闭。

请问 cmake 开发 MFC,如何打包和使用 rc 文件中的图标资源

这是我的CMakeLists.txt:

file(GLOB_RECURSE AEGISUB_BITMAPS CONFIGURE_DEPENDS resource/*.ico)
list (LENGTH AEGISUB_BITMAPS length)
message (">>> LENGTH: ${length}")
foreach(BITMAP_FILENAME IN LISTS AEGISUB_BITMAPS)
    get_filename_component(BITMAP_NAME ${BITMAP_FILENAME} NAME_WE)
    string(TOUPPER bitmap_${BITMAP_NAME} BITMAP_NAME_UPPER)
    message (">>> FILE_NAME: ${BITMAP_FILENAME}")
    string(APPEND AEGISUB_RES_WIN_RC_ENTRIES "${BITMAP_NAME_UPPER} RCDATA ${BITMAP_FILENAME}\n")
endforeach()
configure_file(resource/resources.rc.in src/generated/windows/resource.rc)
target_sources(WindowTool PRIVATE
        src/generated/windows/resource.rc)

我在 resource 下提取了 ico 后缀文件并将其保存到变量中,并使用 configure_file 方法生成了 rc 文件。生成的文件:

BITMAP_LOGO RCDATA D:/CodeWorkSpace/WindowTool/resource/logo.ico
BITMAP_LOGO2 RCDATA D:/CodeWorkSpace/WindowTool/resource/logo2.ico

然后使用 target_sources 方法,然后构建成功,但是当我在代码中获取资源时,我无法获取它们。代码如下:

CString resourceStr = L"BITMAP_LOGO2";
    LPWSTR resourceName = (LPWSTR)(LPCWSTR)resourceStr;
    HRSRC resSrc = FindResource(NULL, resourceName, RT_RCDATA);//Here I tried replacing NULL with the current window handle, but it also didn't work
    if (resSrc == NULL){
        MessageBox(NULL,
                   _T("can not find resource"),
                   _T("can not find resource"),
                   NULL);
        return 1;
    }

请问自己做错了什么? 我的开发工具是clion。

C 可视化 C++ CMake 嵌入式资源

评论


答: 暂无答案