gpt4 book ai didi

c++ - FindResource 1813 错误 RC_DATA

转载 作者:行者123 更新时间:2023-11-30 18:30:58 24 4
gpt4 key购买 nike

我正在尝试从资源文件中获取 .png 图像。

res.rc
TEST_BKG RC_DATA "img\\mainwnd_bkg.png"

-

main.c
HRSRC hRsrc = FindResource(NULL,(LPCSTR)"TEST_BKG", RT_RCDATA);

但我有 1813 错误:ERROR_RESOURCE_TYPE_NOT_FOUND

<小时/>

我创建了新文件并再次尝试使用 BITMAP:

1 BITMAP "img/mainwnd_bkg.bmp"
2 RC_DATA "img/mainwnd_bkg.png"

来源:

int main()
{
HRSRC hRsrc = FindResource(NULL,MAKEINTRESOURCE(1), BITMAP);
if (!hRsrc)
printf ("err");
hRsrc = FindResource(NULL,MAKEINTRESOURCE(2), RT_RCDATA);
if (!hRsrc)
printf ("err2");
getchar();
return 0;
}

我只得到“err2”。

最佳答案

此错误情况意味着您指定的模块中不存在具有该 ID 和类型组合的资源。

最可能的解释是您正在使用定义的 UNICODE 进行编译。因此,FindResource 宏扩展为 FindResourceW。这可以解释为什么您选择转换 8 位字符串。大概是编译器反对,您决定使用强制转换。

如果是这样的话, Actor 阵容就有问题。您使用的强制转换不会更改字符串的内容,它只是告诉编译器禁止类型检查。实际上,您告诉编译器您正在传递一种类型的数据,而实际上您提供了一种不同类型的数据,这是对编译器撒谎。一般来说,您应该避免强制转换。

通过传递宽字符串来修复代码:

HRSRC hRsrc = FindResource(NULL, L"TEST_BKG", RT_RCDATA);

您可能更愿意明确调用的函数并像这样编写:

HRSRC hRsrc = FindResourceW(NULL, L"TEST_BKG", RT_RCDATA);

其他可能的解释是您没有链接已编译的资源,或者已编译的资源在某种程度上缺少您的 RCDATA 资源,或者提供给 FindResource 的模块句柄是不正确的。您可以使用资源查看器来查看最终可执行文件的内容。

关于c++ - FindResource 1813 错误 RC_DATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27635494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com