资源封装进dll

有时候开发一个dll,需要使用到模型资源,传统的做法都是放到特定地方去加载,或者放到服务器上去加载。

虽然前者方便,但资源与组件分离,常常会发生资源与控件不匹配的问题出现。

后者就更麻烦了,修改的时候通常需要加解密,上传下载。不仅无端增加了网络代码,还增加延迟。

这时,如果将模型资源打包进dll,将省去下载相关代码,交互也变得极其简单。

过程如下:

一、添加数据、资源

  在resource(资源)中 通过 “Add resource -> Import...”选择需要添加的 数据/资源,其中的 resource type 可以自己命名。

二、访问数据、资源

  使用FindResource,LoadResource查找并加载资源。这与从文件中加载模型的方式区别较大,但在调用CreateStreamOnHGlobal 获取到流之后的操作便相同了。

  传统的调用CreateFile、ReadFile、CreateStreamOnHGlobal 即可完成文件到流的转换。需要注意使用GlobalLock、GlobalUnlock。

  这里调用GetModuleHandleEx(如果是本dll中资源则可以省去)、FindResource、LoadResource、CreateStreamOnHGlobal即可完成流获取。

原文地址:https://www.cnblogs.com/ice-arrow/p/12172905.html

时间: 2024-10-09 22:48:28

资源封装进dll的相关文章

控件注册 - 利用资源文件将dll、ocx打包进exe文件(C#版)

原文:控件注册 - 利用资源文件将dll.ocx打包进exe文件(C#版) 很多时候自定义或者引用控件都需要注册才能使用,但是如何使要注册的dll或ocx打包到exe中,使用户下载以后看到的只是一个exe,点击直接运行呢?就像很多安全控件,如支付宝的aliedit.exe那样. 现在介绍一种使用资源文件,将dll.ocx打包进exe,点击直接注册的例子: 首先,新建一个工程RegisterFile.  新建文件夹Resource,里面添加需要注册的ocx或dll.这里我添加的是dsoframer

将FormView视图封装到DLL中

在多文档编程框架中,要显示多个视图,如果将视图类封装到DLL中,调用时将视图嵌入到主框架中,能实现模块编程. (1)创建一个MFC的控展DLL工程,在资源中添加一个FormView窗口,并创建相应的类CDeviceManageView.添导出函数如下: extern "C" AFX_EXT_API UINT Create(CRuntimeClass * * view,CWnd * p) { new CDynLinkLibrary(DeviceManageDLL); *view = RU

C# 中如何将一个类文件(XX.CS)封装成.dll文件

C# 中如何将一个类文件(XX.CS)封装成.dll文件 Visual Studio Tools------> Visual Studio 2010命令提示 输入以下命令:csc /t:library /out:c:\XXX.dll c:\XXX.cs 其中c:\XXX.cs 为要生成的cs文件:c:\XXX.dll为生成的dll文件

C# 将已有程序封装为DLL文件,供其他程序调用

如果开发的程序很大,功能很复杂,载入时就很慢,用户感受不好,因此可以将一些功能分开,单独封装为DLL文件,当程序运行时有需要时才调用,加快程序响应速度. 在网上搜索了一下,其实过程比较简单: 打开工程---“解决方案”下方一行---属性---应用程序---修改“输出类型”为“类库”,F5编译程序即可. 此时,会有错误提示如下: ---------------------------Microsoft Visual Studio---------------------------无法直接启动带有

unity 代码C#封装为dll

1  Visual studio软件打开后创建一个项目 2并选择类库类型 3编写简单的代码看看效果(发现会报错),主要是没有添加类库,以及using UnityEngine;引用空间 4添加类库,引用空间 发现依然会报错,这就需要添加应用库unityengine.dll,方法如下 找到安装unity目录下的UnityEngine.dll,添加后你就会发现,报红的地方消失 5右键解决方案,生成解决方案 在此之前你需要选择运行的.framwork版本,需要和unity的使用版本要求一致,我的是在.f

C#封装成DLL,并在C#中调用

一.C#封装成DLL 1.在VS中创建项目选择类库,命名 myDll 2.建立好项目后自动生成的代码如下: 代码修改如下,添加自己要封装的C#代码,注意修饰符必须为public using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace myDLL { public class Class1 { //封装的DLL函数 public int add(int x, in

.net core项目中引用.net framework封装的dll库

https://blog.csdn.net/sharphou/article/details/80746551 A----------如何安装IIS [Server Hosting]--------------------------------------------------------------------------------------------Asp.Net Core 2.0 之旅---在window 上 部署WEB应用程序 像样点的教程 安装 core **https://

C++类封装成DLL动态链接库

最近在进行OSG开发,想将里面模型导入部分重复使用的代码封装成DLL,这样后续不需要重复编写这部分代码.而C++类封装成DLL步骤如下: 1. VS2015新建一个Win32项目,应用程序类型选择DLL 2.新建DLL项目后,项目解决方案文件结构如下: 3.配置OSG库 因为DLL使用到了osg库,所以项目首先要配置osg库,如下: 4.打开OSG.h头文件,进行代码编写修改 在头文件中加入OSG库的相关头文件,并且在类中进行函数和变量的声明,头文件如下(标红部分为添加代码): 5.在源文件中O

Windows XP 系统自带扑克牌资源动态链接库cards.dll逆向分析笔记

使用工具:IDA Pro, Resource Hacker 0. 前言 cards.dll是Windows系统目录下的一个动态链接库,主要提供扑克牌图像及相关操作等资源,以供 Windows附带的扑克游戏程序(如纸牌.红心大战等)使用. 我们希望知道cards.dll具体提供了哪些东西,可供自由编程所用. 1. 反编译 一般而言,将原始二进制文件还原成高级语言源文件的逆向工程有两个步骤:一是反编译,根据目 标文件反汇编的内容,识别指令.存储单元等基本要素并理解这些要素之间的相互关系,从而写出相应