【问题标题】:Why do I get "The procedure entry point CreateVssBackupComponentsInternal could not be located in the dynamic link library VSSAPI.DLL."为什么我得到“程序入口点 CreateVssBackupComponentsInternal 不能位于动态链接库 VSSAPI.DLL 中。”
【发布时间】:2010-07-21 20:11:26
【问题描述】:

大家好,先给大家介绍一下背景: 我正在开发一个项目,该项目是在带有 windows sdk 7.0 和最重要的修补程序的 winxp sp3 上使用 vs2005 构建的,该修补程序旨在从 win xp (sp 0) -> windows 7 工作。

项目的一部分是查询快照并尝试一下。 在我的开发环境中一切正常, 在 Windows 7 上一切正常(还可以,但这不是重点)。

在干净的 xp 机器(sp3 和 2)上,我得到: 当我启动应用程序时,“过程入口点 CreateVssBackupComponentsInternal 无法位于动态链接库 VSSAPI.DLL 中” - 甚至在我到达与 VSSAPI 相关的代码部分之前......

1) 在我开始调用之前它如何引发消息? 2) 有谁知道为什么它不起作用?

谢谢

【问题讨论】:

    标签: c++ dll volume-shadow-service


    【解决方案1】:

    1) 因为 DLL 在您的应用程序启动时加载,而不是在第一次需要时加载。如果您想稍后甚至有条件地加载它,请查找延迟加载或 LoadLibrary 系统调用。

    2) 我不知道,但是之前有人问过同样的问题:Why does my Volume Shadow Copy Service requester fail: cannot find CreateVssBackupComponentsInternal

    【讨论】:

    • 感谢您的回答,我看过那篇帖子,我认为因为我的函数调用没有被调用,所以我的问题有所不同。我希望我的下一个问题不会太多,动态调用 CreateBackupVssComponent 很容易,但是其余的函数(它们是 vss 家族成员的类的成员函数)会有点困难。是对 CreateBackupVssComponent 函数的调用使应用程序验证它是否存在于 DLL 中?换句话说,如果我根本不调用该函数,它会在 DLL 中搜索它吗?
    • 如果您的应用程序中有对函数的调用,DLL 将在启动时加载,并且函数需要在其中。如果不使用 LoadLibrary 和 GetProcAddress,您将无法有条件地执行此操作。
    • 嗯...谢谢。我会尝试动态加载它们。我发现我项目中的一些库会抛出“WINVER 未定义。默认为 0x0502 (Windows Server 2003)”的消息,这可能就是问题所在。谢谢!
    • 嘿仍然没有运气。我查看了文件 VSbackup.h 并定义了函数 CreateVSSBackComponenets: inline HRESULT CreateVssBackupComponents ( __out IVssBackupComponents **ppBackup ) { return CreateVssBackupComponentsInternal(ppBackup); } 操作系统版本无关紧要。
    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2010-12-07
    • 2014-07-22
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多