静态链接SHFolder组件

时间:2011-12-30 19:09:42

标签: c++ dll static-linking

我有一个用C ++ Builder XE开发的Win32应用程序,在过去的几年里,它在WinPE 2.x / 3.0环境中运行良好。我在过去几个月中做了一些重大更改,但现在它已经完成并且我尝试在WinPE下运行它我得到错误消息:程序无法启动因为您的计算机缺少SHFOLDER.DLL 。

由于我无法控制WinPE环境,并且此dll未包含在WinPE中,我首先想到的是尝试静态链接必要的组件。但是,似乎此dll提供的功能仅可从dll中获得。

我无法找到有关此DLL的任何有用信息,遗憾的是我不知道我添加了哪些功能现在需要此DLL。我希望有人有这方面的经验,并可以帮助指导我静态链接所需的组件,或找到一个解决方法,以便此应用程序不再需要该DLL。谢谢!

1 个答案:

答案 0 :(得分:1)

shfolder.dll用于获取shell文件夹路径,如桌面,我的文档,Windows目录等。由于{{3}之间的实现差异,它在所有版本的Windows中始终如一地实现SHGetFolderPath() },SHGetSpecialFolderPath()SHGetFolderLocation()

MSDN更好地解释了它:

  

此函数是SHGetSpecialFolderPath的超集,包含在   早期版本的Shell。在那些之前的系统上   包括Shell32.dll 5.0版(Windows Millennium Edition(Windows   我和Windows 2000),SHGetFolderPath是通过获得的   SHFolder.dll,随Microsoft Internet Explorer 4.0和   以后的版本。 SHFolder.dll始终调用当前平台   这个功能的版本。如果失败,它会尝试模拟   适当的行为。继续包含SHFolder.dll   向后兼容,但现在实现了该功能   SHELL32.DLL。

DLL本身是SHGetKnownFolderPath(),因此您可以将其包含在WinPE中。如果它们适合您并且您不需要任何特殊情况,您也可以使用任何其他功能。