如何将二进制数据嵌入/链接到 Windows 模块中
Posted
技术标签:
【中文标题】如何将二进制数据嵌入/链接到 Windows 模块中【英文标题】:How to Embed/Link binary data into a Windows module 【发布时间】:2011-02-13 23:20:44 【问题描述】:所以我有一个 Visual Studio 2008 项目,其中包含大量当前正在引用的二进制数据。我想像使用 C# 一样打包二进制数据,将其添加为“资源”并将其编译为 DLL。
假设我的所有数据都具有“.data”的扩展名,并且当前正在从 Visual Studio 项目中读取。
有没有一种方法可以将数据编译或链接到它正在调用的 .dll 中?
我已经查看了一些谷歌链接,但到目前为止我还没有想出任何东西 - 我想出的唯一可能的解决方案是使用类似 ResGen to create a .resources file 的东西,然后使用链接它AssemblyLinker 带有 /Embed 或 /Link 标志。我认为它不能正常工作,因为我没有文本文件来创建 .resources 文件,而是二进制文件本身。
有什么建议吗?
【问题讨论】:
【参考方案1】:您可以将二进制数据嵌入为 C 语言数组 - 完全不涉及任何资源。 一个古老的经典技巧。 参见例如XD
【讨论】:
【参考方案2】:-
右键单击资源脚本(.rc 文件)
选择导入
http://msdn.microsoft.com/en-us/library/saced6x2.aspx
您可以嵌入任何您想要的“自定义”文件,以及诸如 .bmps 之类的内容以及 VisualStudio“知道”如何编辑的内容。然后你可以使用你的框架的资源函数来访问它们,比如FindResourceLoadResource等等......
如果您没有资源脚本。
-
点击项目
添加新项目
资源脚本
http://msdn.microsoft.com/en-us/library/sxdy04be(v=VS.71).aspx
【讨论】:
如何用这个导入二进制数据?使用“位图 (.bmp)、图标 (.ico)、光标 (.cur)、html 文件 (.htm)”看起来很容易,但是如何导入“其他”数据呢? 没有资源脚本怎么办? @CrimsonX 当您导入 Visual Studio 无法理解或编辑的文件时,即使它无法读取它,它仍然可以将其推入 PE 文件的数据(可执行文件或 dll)中。 “资源”只是 exe 或 dll 的数据部分中的文件。 msdn.microsoft.com/en-us/magazine/cc301805.aspx 感谢罗伯特的澄清和帮助,我会试试这个。非常感谢。以上是关于如何将二进制数据嵌入/链接到 Windows 模块中的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 USB 将数据从 Windows 发送到嵌入式 Linux