为什么我的卷影复制服务请求程序失败:找不到 CreateVssBackupComponentsInternal
我已经实现了一个 VSS 请求程序,它在 Windows Server 2008 上链接编译和执行,但不在 Windows Server 2003 上执行。由于我的请求程序位于 DLL 内,因此我的 DLL 将不会加载。 使用 Dependency Walker,我发现我的 DLL 很好地找到了 VSSAPI.DLL,但它报告
Error: At least one required implicit or forwarded dependency was not found.
:在我的 VSSAPI.DLL 中,它找不到 CreateVssBackupComponentsInternal
,而 VSSAPI.DLL 导出完全不同的内容:?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z
。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
VSS 必须专门针对每个平台和操作系统进行编译和定位,包括 Windows XP、Windows Server 2003 和 Vista/Windows Server 2008。
第一个完全支持 VSS 请求程序的 Microsoft SDK 是 v6.1,并且仅支持在 Vista 上运行的请求程序。 如果您想在 Windows Server 2003 或 XP 上运行:
以下是 AlphaVSS 在其 Config.h 中所做的操作,但是VSS SDK 中的 VShadow 示例没有:它仅设置包含路径和库路径。 我建议遵循VShadow更有可能成功。 但为了完整起见:
如果针对 Windows XP:
如果针对 Windows Server 2003:
如果针对 Vista,请勿引用 VSS SDK。 相反,请参考 Windows 6.1 SDK,并且:
我不能将所有功劳都归功于此,我通过阅读名为 AlphaVSS(请参阅公告),将 VSS 公开给 .NET 代码。 MSDN 似乎没有太大帮助。 但是,VShadow 工具和示例提供了如何编译 VSS 请求程序的示例。
另请注意,对于 x64 或 ia64 与 x86,您必须再次重新编译。 这意味着为了支持所有平台,您需要 9 个可执行文件的编译版本。
VSS must be compiled and targeted specifically for each platform and OS, including Windows XP, Windows Server 2003, and Vista/Windows Server 2008.
The first Microsoft SDK to fully support VSS requesters is v6.1, and it only supports requesters running on Vista. If you want to run on Windows Server 2003 or XP:
The following is what AlphaVSS does in its Config.h, but the VShadow sample in the VSS SDK does not: it only sets the include and library paths. I would suggest that following VShadow is more likely to succeed. But for completeness:
If targeting Windows XP:
If targeting Windows Server 2003:
If targeting Vista, don't reference the VSS SDK. Instead reference the Windows 6.1 SDK and:
I can't take all the credit for this, I figured this out by reading the source code of a project called AlphaVSS (see announcement), which exposes VSS to .NET code. MSDN did not seem to be very helpful. However, the VShadow tool and sample provided an example of how to compile a VSS requester.
Also note that you must recompile again for x64 or ia64 vs x86. That means in order to support all platforms, you'll need 9 compiled versions of your executable.
只是想补充一点,AlphaVSS 还设置路径,而不仅仅是定义。 这在任何一种情况下都是需要的。
Just wanted to add that AlphaVSS also sets the paths, not only the defines. This is needed in either case.