微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 VS

如何解决使用 VS

我使用的是 Visual Studio Community 2019 版本 16.10.4。我创建了一个显示 bmp 图片的 Win32 C++ 应用程序。我一直试图将图片嵌入到编译的 .exe 中,但没有成功。我的目标是在不需要任何其他文件文件夹的情况下创建 .exe。

我做了以下事情:

  1. 解决方案资源管理器中右键单击应用名称
  2. 从下拉菜单中选择添加并从弹出框中选择新项目
  3. 选择左列中的资源和右列中的资源文件(.rc),然后选择底部添加按钮
  4. 出现弹出窗口:警告 RC4005:'_APS_NEXT_RESOURCE_VALUE':重新定义,选择确定
  5. 在资源视图中,右键单击 Resource.rc 并选择底部添加资源...
  6. 选择位图并选择新建 还有一些步骤,但在尝试解决问题后我迷失了方向。

在资源文件下的解决方案资源管理器中,我有 Resource.rc 和 art1.bmp。对于 art1.bmp 我有它,所以它不会被排除在构建之外。还创建了一个 resource.h 文件

resource.h 具有以下内容

//{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
// Used by Resource.rc
//

#define IDB_BITMAP1                     103

// Next default values for new objects
// 
#ifdef APSTUdio_INVOKED
#ifndef APSTUdio_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE        104
#define _APS_NEXT_COMMAND_VALUE         40001
#define _APS_NEXT_CONTROL_VALUE         1001
#define _APS_NEXT_SYMED_VALUE           101
#endif
#endif

在 .rc 文件中,它具有以下(以及更多)

IDB_BITMAP1             BITMAP                  "art1.bmp"

我在项目根目录、Release 文件夹和 Debug 文件夹中有 art1.bmp。

在我将代码编译到 Release x86 后,当我运行 .exe 时,图片显示没有任何问题(在 Debug 中相同)。如果我从 Release 文件夹中删除图片图片将不再显示

关于我错过了哪些步骤或我需要更改哪些步骤以便图片成为 .exe 的一部分而不是单独文件的任何建议?

解决方法

非常感谢 Igor,在他的帮助下,这个问题终于得到解决。

我的原始代码(当时没有发布)是:

bitmap = (HBITMAP)LoadImageA(NULL,"art1.bmp",IMAGE_BITMAP,LR_LOADFROMFILE); 

Igor 正确地问到“您是否在代码中的任何地方使用 IDB_BITMAP1?”事实并非如此。

我设法走得更远,但还是失败了:

bitmap = (HBITMAP)LoadImageA(NULL,MAKEINTRESOURCE(IDB_BITMAP1),LR_LOADFROMFILE); 

我曾尝试将 LR_LOADFROMFILE 替换为 NULL,但没有成功。 Igor 提供的最后一个键是 GetModuleHandle(nullptr) 和 NULL 用于 UINT。

bitmap = (HBITMAP)LoadImageA(GetModuleHandleA(nullptr),NULL);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。