VS2015 MFC - 如何将静态库资源链接到项目
Posted
技术标签:
【中文标题】VS2015 MFC - 如何将静态库资源链接到项目【英文标题】:VS2015 MFC - How to Link a Static Library Resources to a project 【发布时间】:2017-05-16 03:38:24 【问题描述】:加入 .rc/resource.h 文件的问题
所以过去 4 天我一直在研究这个问题,但我似乎找不到有效的答案。我找到了一些关于如何做到这一点的旧资源,但在 VS2015 中找不到如何做到这一点。
我正在构建一个 MFC 功能区应用程序,它使用静态库扩展名义上的 Office2007 主题。问题是我想将资源存储在库中而不是项目本身中,因为我想稍后以最小的开销重用这个库。我知道主题代码可以完美运行,因为当您从 lib .rc 和 resource.h 文件中移动资源声明并将它们放入项目 .rc/resource.h 文件中时,libs 函数可以完美运行。
我知道项目设置中的路径是正确的,因为程序编译时没有警告或错误。当您在激活我的自定义主题时逐行执行代码时,它会在查找 Style.XML 文件时中断。
我已经将我的 lib 的 .rc/resource.h 文件包含在我的主项目的 .rc 文件中,并且我已经在配置属性/资源/常规/附加包含目录中添加了正确的资源路径。
然而,这似乎没有起作用,因为当我解压缩生成的 .exe 时,资源不在那里。
Tl;Dr 如何将 .png/.xml 资源从静态库链接/包含到 MFC 项目?
link to the resource I used to get this far
任何帮助表示赞赏!谢谢!!
【问题讨论】:
静态库不能包含资源。 .lib 文件格式根本没有对此的规定。您应该能够将您的 .rc 文件编译为 .res,并与之链接。 我应该澄清一下。 lib 项目有自己的 .rc 和 resource.h 文件,允许我将资源嵌入到该项目中。据我了解,我需要将它们分别链接到主项目以及链接 .lib 文件。问题是,一旦我按照原始帖子中包含的链接上的说明进行操作,它们就无法通过。 【参考方案1】:所以我现在已经解决了这个问题。事实证明,我的 lib 项目 .rc 文件没有被正确编译成 .res 文件。一旦我从我的项目目录中删除了有问题的 .rc 文件并从头开始重写它,它就会正确编译。一旦我这样做并在整个解决方案上进行了清理/重建,它就会再次开始工作,现在资源在 .exe 中正确显示并且我的自定义主题工作正常!
基本上,我在原始问题中包含的链接中概述的过程按照指定的方式工作,除非 VS 决定不正确地完成它的工作!
如果其他人遇到这个问题。使用第三方资源编辑器解压缩您的 .res 文件,并确保它们正在正确编译。这个问题是一个沉默的时间杀手!
【讨论】:
资源编译器已经使用了数十年,被数百万个应用程序使用。几乎可以肯定,问题出在您的构建系统/项目配置中。不过,目前还不清楚“问题” 是什么,或者这个提议的答案如何解决它。也不确定你认为哪个部分是“沉默的时间杀手”。最可能的原因:您将错误的模块句柄传递给资源查找函数(请参阅Accessing the current module’s HINSTANCE from a static library)。以上是关于VS2015 MFC - 如何将静态库资源链接到项目的主要内容,如果未能解决你的问题,请参考以下文章