/ / Pragma und einschließlich Header / Bibliotheken - Visual-C ++

Pragma und inklusive Header / Bibliotheken - Visual-C ++

VS C ++ 2008

Ich arbeite gerade an einem DirectX-Tutorial.

Im Quellcode hatte diese Zeile:

#pragma comment (lib, "d3d9.lib")

Beim kompilieren alles ok verlinkt.

Ich habe diese Zeile jedoch auskommentiert und versucht, den Header und die Bibliothek wie folgt in die Eigenschaften aufzunehmen:

C/C++ - General
Additional include directories: "C:Program FilesMicrosoft DirectX SDK (August 2009)Include"

Linker - General
Additional library directories: "C:Program FilesMicrosoft DirectX SDK (August 2009)Libx64"
Linker - Input: d3d9.lib

Allerdings habe ich diesen Linker-Fehler bekommen:

1>main.obj : error LNK2019: unresolved external symbol _Direct3DCreate9@4 referenced in function _initD3D

Wenn ich jedoch nur das Pragma verwende, erhalte ich keine Linker-Fehler. Nur wenn ich versuche, sie mit den oben genannten Eigenschaften zu versehen.

Was ist der wirkliche Unterschied bei der Verwendung von Pragma und der Einbeziehung der Header / Bibliotheken unter Verwendung der Eigenheiten?

Danke vielmals,

Antworten:

3 für die Antwort № 1

#pragma comment (lib) ist zunächst nur eine Linkerkonfiguration

Zweitens sollte sich das SDK im Pfad befinden. Legen Sie also keine zusätzlichen Bibliotheksverzeichnisse fest (Sie können es mit einer falschen Version überschreiben). Fügen Sie einfach d3d9.lib zur Eingabe des Linkers hinzu.


1 für die Antwort № 2

Soweit ich weiß, gibt es keinen Unterschied. Pragma Lib fordert den Linker einfach auf, nach einer bestimmten Bibliothek mit Namen zu suchen.

Auch da der Pfad in der nicht angegeben istPragma, der Linker verlässt sich auf die aktuellen lib-Pfade für Ihr Projekt. Versuchen Sie, Ihren Linker-Optionen keinen Pfad hinzuzufügen (standardmäßig fügt DX SDK Pfade zu jedem installierten Visual Studio hinzu, wobei die globalen Visual Studio-Pfade direkt geändert werden. Siehe Tools / Optionen / Projekte und Lösungen / VC ++ - Verzeichnisse / Verzeichnisse für Bibliotheksdateien anzeigen).

Einige Dinge zu überprüfen:

  • Sie bauen in der Tat für x64
  • Ihr Pfad zeigt wirklich auf das DX SDK (es wird in Programme (x86) installiert, wenn Sie sich auf x64 befinden)
  • Überprüfen Sie, ob keine anderen Linker-Warnungen vorhanden sind