静态链接SHFolder组件
Static linking SHFolder components
我有一个用c++ Builder XE开发的Win32应用程序,在过去的几年里,它在WinPE 2.x/3.0环境下运行得很好。在过去的几个月里,我做了一些重大的改变,但现在它已经完成,我试图在WinPE下运行它,我得到错误信息:程序无法启动,因为SHFOLDER.DLL从您的计算机中丢失。
由于我无法控制WinPE环境,并且此dll不包含在WinPE中,我的第一个想法是尝试静态链接必要的组件。但是,这个dll提供的功能似乎只能从dll中获得。
我没能找到这个DLL的任何有用的信息,不幸的是,我不知道我添加的哪个功能现在需要这个DLL。我希望有人有这方面的经验,可以帮助引导我静态链接所需的组件,或找到一个解决方案,使这个应用程序不再需要dll。谢谢!
shfolder.dll
用于获取shell文件夹路径,如Desktop, My Documents, Windows目录等。由于SHGetSpecialFolderPath()
, SHGetFolderLocation()
, SHGetKnownFolderPath()
等之间的实现差异,它在所有版本的Windows上始终如一地实现SHGetFolderPath()
。
MSDN解释得更好:
这个函数是SHGetSpecialFolderPath的超集,包含在早期版本的Shell。在之前的系统中包含Shell32.dll 5.0版本(Windows千禧年版)在Windows 2000中,SHGetFolderPath通过与Microsoft Internet Explorer 4.0和后来的版本。dll总是调用当前平台的此函数的版本。如果失败,它会尝试模拟适当的行为。SHFolder.dll将继续包含在向后兼容,但该函数现在在二。
DLL本身是可重新分发的,因此您可以将其包含在WinPE中。您也可以使用任何其他函数,如果它们适合您,并且您不需要任何特殊情况。
- 如何将 txt 文件中的行分隔为组件C++
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 到连接组件算法的问题(递归)
- 两个 COM 组件中 ENUM 的重复条目
- 为什么 gcc 会产生这种奇怪的组件与叮当声?
- 使用 bfs 解决连接组件问题时得到错误的答案
- 如何在ECS框架中更新组件数据和通知系统
- 如何从ECS中的模板方法获取组件?
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- 在C++中访问蓝图类组件的正确方法是什么?
- 有关纯 ECS(实体组件系统)和更新系统的问题
- 提高基于组件的游戏引擎的效率
- 从组件的 std::type_index 获取派生最多的类型
- 我们可以将阈值应用于色彩空间模型的单个组件(如 RGB 和 LAB)吗?
- 如何通过 UActor组件获取演员列表?
- 在Visual Studio 2017中使用c ++组件构建python解决方案时出现问题
- 如何访问基类向量中的子类变量?(对于实体组件系统)
- 根据组件 1、2(和 3)对空间 (2D/3D) 向量进行排序
- 静态链接SHFolder组件