为什么我的音量阴影复制服务请求者失败:找不到Createvssbackupcomponentsinternal

StackOverflow https://stackoverflow.com/questions/789754

  •  16-09-2019
  •  | 
  •  

我已经实现了VSS请求器,并且它链接了Windows Server 2008上的编译和执行,但在Windows Server 2003上没有执行。由于我的请求者在DLL内部,我的DLL不会加载。使用 依赖性沃克, ,我发现我的dll正在发现vssapi.dll很好,但它报告了:

Error: At least one required implicit or forwarded dependency was not found.

看我的vssapi.dll,找不到 CreateVssBackupComponentsInternal, ,而vssapi.dll导出了完全不同的东西: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

有帮助吗?

解决方案

VSS必须专门针对每个平台和OS,包括Windows XP,Windows Server 2003和Vista/Windows Server 2008。

第一个完全支持VSS请求者的Microsoft SDK是v6.1,它仅支持在Vista上运行的请求者。如果要在Windows Server 2003或XP上运行:

  • 下载 VSS SDK 7.2.
  • 设置您的包含路径和库路径以搜索VSS SDK中的适当目录。

以下是Alphavss在其中所做的 config.h, ,但是VSS SDK中的VSHADOW示例没有:它仅设置Incluble和库路径。我建议跟随Vshadow更有可能成功。但要完整:

如果针对Windows XP:

#define NTDDI_VERSION NTDDI_WINXPSP2
#define _WIN32_WINNT _WIN32_WINNT_WINXP
#define WINVER _WIN32_WINNT

如果针对Windows Server 2003:

#define NTDDI_VERSION NTDDI_WS03SP1
#define _WIN32_WINNT _WIN32_WINNT_WS03
#define WINVER 0x501

如果针对Vista,请不要引用VSS SDK。而是引用Windows 6.1 SDK和:

#define NTDDI_VERSION NTDDI_WS08
#define _WIN32_WINNT _WIN32_WINNT_WS08
#define WINVER _WIN32_WINNT

我不能为此付出所有的荣誉,我通过阅读一个名为的项目的源代码来弄清楚这一点 Alphavss (看 公告),将VSS暴露于.NET代码。 MSDN似乎并不是很有帮助。但是,那 Vshadow 工具和示例提供了一个如何编译VSS请求者的示例。

另请注意,您必须再次重新编译X64或IA64与X86。这意味着要支持所有平台,您将需要9个编译版本的可执行版本。

其他提示

只是想添加Alphavss还设置了路径,而不仅仅是定义。无论哪种情况,这都是必需的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top