Frage

Ich habe einen VSS -Anforderer implementiert und es wird unter Windows Server 2008 kompiliert und ausgeführt, aber nicht auf Windows Server 2003 ausgeführt. Da sich mein Anforderer in einer DLL befindet, wird meine DLL nicht geladen. Verwendung der Abhängigkeitswanderer, Ich habe festgestellt, dass meine DLL vssapi.dll gut findet, aber es berichtet:

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

Wenn ich meine vssapi.dll betrachten kann, kann es nicht finden CreateVssBackupComponentsInternal, während vssapi.dll etwas völlig anderes exportiert: ?CreateVssBackupComponents@@YGJPAPAVIVssBackupComponents@@@Z.

War es hilfreich?

Lösung

VSS muss speziell für jede Plattform und jedes Betriebssystem zusammengestellt und gezielt angezeigt werden, einschließlich Windows XP, Windows Server 2003 und Vista/Windows Server 2008.

Der erste Microsoft SDK, der die VSS -Anträge vollständig unterstützt, ist V6.1 und unterstützt nur Anträge auf Vista. Wenn Sie unter Windows Server 2003 oder XP ausführen möchten:

  • Download VSS SDK 7.2.
  • Setzen Sie Ihre Einfügen und Bibliothekswege, um das entsprechende Verzeichnis im VSS -SDK zu durchsuchen.

Das Folgende ist das, was Alphavss in seiner macht Config.h, Aber das VShadow -Beispiel im VSS SDK nicht: Es legt nur die Einfügen und die Bibliothekswege fest. Ich würde vorschlagen, dass es wahrscheinlicher ist, dass Vshadow erfolgreich ist. Aber für die Vollständigkeit:

Wenn Sie Windows XP zielen:

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

Wenn Sie Windows Server 2003 abzielen:

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

Wenn Sie auf Vista abzielen, verweisen Sie nicht auf das VSS -SDK. Verweisen Sie stattdessen auf die Windows 6.1 SDK und:

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

Ich kann nicht all die Anerkennung dafür aufnehmen, ich habe das herausgefunden, indem ich den Quellcode eines Projekts namens lese Alphavss (sehen Bekanntmachung), das VSS dem .NET -Code aussetzt. MSDN schien nicht sehr hilfreich zu sein. Allerdings die Vshadow Werkzeug und Beispiel lieferten ein Beispiel dafür, wie ein VSS -Anforderer zusammengestellt wird.

Beachten Sie auch, dass Sie für x64 oder ia64 gegen x86 erneut kompilieren müssen. Um alle Plattformen zu unterstützen, benötigen Sie 9 kompilierte Versionen Ihrer ausführbaren Datei.

Andere Tipps

Ich wollte nur hinzufügen, dass Alphavss auch die Pfade setzt, nicht nur die Definierungen. Dies ist in beiden Fällen erforderlich.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top