2012-03-28 9 views
2

ich erstellen Konsolenanwendung in VC++ 2010 und fügen Sie den folgenden Code hinzu:nicht aufgelöstes externes Symbol _IID_IDXGIFactory

 
#include <d3d10.h> 
#include <d3dx10.h> 
#include <DxErr.h> 

#pragma comment(lib, "d3d10.lib") 
#pragma comment(lib, "d3dx10.lib") 
#pragma comment(lib, "dxgi.lib") 
#pragma comment(lib, "dxerr.lib") 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    IDXGIFactory* pDXGIFactory; 
    CreateDXGIFactory(IID_IDXGIFactory, (void**)&pDXGIFactory); 

    return 0; 
} 

dieses Projekt Aufbau, ich habe Linkerfehler: Fehler LNK2001: extern Symbol _IID_IDXGIFactory

Jetzt erstelle ich Konsolenanwendung mit MFC-Unterstützung und füge denselben Code hinzu. Der Build ist erfolgreich. Was ist im ersten Fall falsch? Warum MFC-Projekt wird erfolgreich erstellt, und Nicht-MFC-Projekt schlägt fehl?

Antwort

8

Sie benötigen eine andere Bibliothek verweisen, die diese Kennung enthält:

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

MSDN says its DXGI.lib aber effektiv mindestens Windows SDK 7.0 hat es in einer anderen Bibliothek.

+1

Danke! Ich fand auch, dass dxguid.lib das Problem löst. –

+0

Der Unterschied ist, dass "dxguid.lib" DirectX SDK-Bibliothek ist (im Gegensatz zu Windows SDK), und nach MSDN ist das Symbol bereits in "Kern" Windows SDK. –

+0

windowscodecs.lib hat geholfen, aber nicht alle meine Fehler behoben. Also, sowohl das als auch dxguid.lib, wie Alex gesagt hat, ist, was es brauchte. Vielen Dank! – leetNightshade

1

Ich hatte das gleiche Problem und in meinem Fall Referenzierung #pragma Kommentar (lib, "dxgi.lib") löste das Problem.