TResourceStream()提示找不到资源

牧牛童子 2024-12-06 23:26:44

TResourceStream* rs;
        rs = new TResourceStream((int)Hinstance, AnsiString("RS_EXE_FILE"), "EXEFILE");   //这里提示找不到资源“RS_EXE_FILE”
        rs->SaveToFile(AnsiString(dstExeFile));

----------
//资源标识符       资源类型     资源的路径
RS_EXE_FILE        EXEFILE      "D:\incExeRsCB2k7\t1.exe"

src1.rc 文件编译成功(编译过程中没报错,EXE文件内容在其中,编译成.res文件)

...全文
730 11 打赏 收藏 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
牧牛童子 2024-12-07
  • 打赏
  • 举报
回复

谢谢各位! 找到 问题 所在了。。。释放成功!。。
我少了 HINSTANCE hInstance = GetModuleHandle(NULL); 这一行。。。

  • 举报
回复
@牧牛童子 RTL里面直接有HInstance这个变量(SysInit.hpp),可以直接使用,不需要再取一次~
ooolinux 2024-12-07
  • 打赏
  • 举报
回复

C++Builder什么版本?

牧牛童子 2024-12-07
  • 举报
回复
@ooolinux c++builder2007 和 C++Builder12.2 两个版本都试过。。。上面贴的是 CBuilder2007的代码。
ooolinux 2024-12-07
  • 举报
回复
@牧牛童子 2007是AnsiString
  • 打赏
  • 举报
回复

以下是一些可能的原因和解决方法:

  1. 资源文件是否正确链接
    确保你的资源文件(.res)已经正确链接到你的项目中。通常,你需要在项目设置中指定资源文件的路径。

  2. 资源标识符是否正确
    确保资源标识符 RS_EXE_FILE 和资源类型 EXEFILE 在资源文件中定义正确,并且与代码中使用的标识符一致。

  3. 资源文件路径是否正确
    确保资源文件路径 D:\incExeRsCB2k7\t1.exe 是正确的,并且文件存在。

  4. 项目设置
    确保你的项目设置中正确包含了资源文件。在 C++ Builder 或 Delphi 中,通常需要在项目选项中指定资源文件。

  5. 代码示例
    以下是一个完整的示例,展示了如何从资源文件中加载资源并保存到文件:

资源文件 src1.rc
RS_EXE_FILE EXEFILE "D:\incExeRsCB2k7\t1.exe"
编译资源文件
使用 brcc32 或 rc 命令编译资源文件:

brcc32 src1.rc

这将生成 src1.res 文件。

项目设置

确保在项目设置中包含 src1.res 文件。在 C++ Builder 中,可以在项目选项中添加资源文件。

代码示例

#include <vcl.h>
#pragma hdrstop

#include <tchar.h>
#include <windows.h>
#include <sysutils.hpp>

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
    TResourceStream* rs;
    HINSTANCE hInstance = GetModuleHandle(NULL);

    try
    {
        rs = new TResourceStream((int)hInstance, "RS_EXE_FILE", RT_RCDATA);
        rs->SaveToFile("D:\\output\\t1.exe");
    }
    catch (Exception &e)
    {
        ShowMessage(e.Message);
    }
    delete rs;

    return 0;
}

解释
资源文件:确保资源文件 src1.rc 中的资源标识符和类型正确。
编译资源文件:使用 brcc32 或 rc 命令编译资源文件,生成 src1.res。
项目设置:在项目设置中包含 src1.res 文件。
代码:使用 TResourceStream 从资源文件中加载资源,并保存到指定文件。
常见问题
资源标识符不匹配:确保资源文件中的标识符与代码中使用的标识符一致。
资源类型不匹配:确保资源类型 RT_RCDATA 与资源文件中定义的类型一致。
路径问题:确保资源文件路径正确,文件存在。

牧牛童子 2024-12-07
  • 举报
回复 1
@牧牛童子 我是工程里直接 添加 的 src1.rc 文件。。。在Debug目里,编译之后,能看到 src1.res ; 而且 也验证过 res确实加入了 程序EXE里(从工程里删除src1.rc,编译出来的EXE体积 变小了)
牧牛童子 2024-12-07
  • 举报
回复 1
@w(゚Д゚)w吓洗宝宝了 感谢 你的 帮助。。。是从你的 示例里 到 找 问题所在的。。
  • 举报
回复 1
@牧牛童子 不客气
1条回复
  • 打赏
  • 举报
回复

(NativeUInt)HInstance

内容概要:本文介绍了一个基于Python的滚动轴承故障诊断项目,采用迁移学习(TL)结合SqueezeNet网络(TL-SqueezeNet)实现智能诊断。项目通过将一维振动信号经短时傅里叶变换转化为二维时频图,输入改进的SqueezeNet模型进行训练与分类。模型利用预训练权重冻结骨干网络、替换分类头,并结合类别权重、数据增强、标签平滑和分阶段微调策略,提升小样本与类别不均衡条件下的诊断性能。系统实现了从原始信号读取、滑动窗口分段、时频图生成、数据集划分、模型训练评估到单文件推理的全流程自动化,支持CSV、TXT、NPY等多种格式,输出包括准确率、宏平均F1、混淆矩阵及各类别概率,增强了诊断结果的可解释性与工程实用性。; 适合人群:具备Python编程基础,熟悉PyTorch框架,从事工业设备故障诊断、信号处理或深度学习应用研究的研发人员、研究生及工程师(工作或研究年限1-3年)。; 使用场景及目标:①解决滚动轴承故障数据小样本、类别不均衡、工况多变导致的传统方法泛化能力差的问题;②构建轻量化、高精度、可部署于边缘设备的智能诊断模型;③实现端到端的自动化诊断流程,提升工业运维智能化水平;④通过可视化评估指标辅助人工复核与模型优化。; 阅读建议:此资源以实际项目代码为核心,强调工程实现与算法优化的结合,建议读者结合文档中的代码示例搭建环境运行,重点理解数据预处理逻辑、模型迁移策略与评估机制的设计思路,并尝试在自有数据上进行迁移与调优实践。
本资源提供重庆市2026年水系(线+面)空间分布数据,系统整理重庆市范围内河流、沟渠、水道、湖泊、水库等水系要素,包含可编辑MXD工程文件、标准Shapefile矢量文件以及标准成图TIF文件,可用于水文地理、水资源管理、生态环境及自然灾害等相关研究。 原始数据来源是Open Street Map(OSM),水系类型包括江、河、溪、水域、水库、河岸、河堤等等,可在shp文件属性表中自行查阅。 数据包含水系线和水系面两类矢量数据。线状水系用于表达河流、沟渠及其他线性水体的空间位置和形态;面状水系用于表达湖泊、水库及其他具有一定面积的水体分布,可较直观地反映重庆市河湖水系的空间格局。 标准Shapefile文件支持空间查询、属性编辑、长度与面积统计、河网密度分析、缓冲区分析及专题制图,可与行政区划、DEM、土地利用、人口、降水及灾害数据进行空间叠加。资源配套提供可编辑MXD工程文件,完成水系图层组织、符号配置、标注及地图版式设置,便于用户直接在ArcGIS中编辑和制图。 该数据可广泛应用于重庆市水资源管理、河湖空间格局研究、洪涝灾害分析、生态环境评价、流域研究及国土空间规划等领域,可为区域水系特征分析及相关GIS空间研究提供基础数据支撑。 同时提供标准成图TIF文件,可直接用于科研论文、项目报告、专题地图及教学展示。整体数据具有线面数据配套、空间分布直观、格式完整、GIS兼容性好等特点,可满足重庆市水系空间分析、专题制图及科研应用需求。

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧