2015-11-07 21 views
1

我想編譯一些代碼來呈現不屬於我的應用程序的窗口上的東西。我想使用DirectX 9來實現這一點,但由於某些原因,鏈接器錯誤現在正在讓我失望。我的所有庫都包含在.h文件中(參見下面的main.h)。LNK2019:無法解析的符號

現在,我將這個.h文件包含在每個其他.h文件中,以便在任何地方使用它。有時我只包含一個包含我的主文件的.h文件。

現在的問題是,當我去任何類我想使用DirectX(包括.h文件),我得到LNK2019錯誤。

auto hResult = Direct3DCreate9Ex(D3D_SDK_VERSION, &this->m_pDirect3D9Ex); 

錯誤在Direct3DCreate9Ex

相應的h文件包括以下面的方式在主h文件:

#ifdef _MSC_VER 
#pragma once 
#endif 

#include "main.h" 

main.h(完成):

#pragma once 
#endif 

#include <Windows.h> 
#include <iostream> 
#include <vector> 
#include <memory> 
#include <chrono> 
#include <thread> 

#include <d3d9.h> 
#include <d3dx9.h> 
#include <dwmapi.h> 
#pragma comment(lib, "d3d9.lib") 
#pragma comment(lib, "d3dx9.lib") 
#pragma comment(lib, "dwmapi.lib") 

#endif 

這甚至可以在使用VisualStudio編譯時起作用,但我需要使用cl.exe來實現此目的。當我將VisualStudio中的所有內容移出後,嘗試構建它時,會發生無法解析的符號錯誤。

我將不勝感激任何幫助,我可以得到,已經浪費了這個小時。

編輯:錯誤

Errormessage

+0

當然:)正如你看到我重新形成我的問題是更確切的,如你之前要求 – Friwi

+1

你試圖編譯和鏈接之前運行編譯器的setup.bat文件嗎?您需要確保您有正確的庫路徑設置。 vcvars32.bat或類似的?你用什麼命令編譯和鏈接? – JJF

+0

cl.exe/I「%DXSDK_DIR%\ Include」/ EHsc/Od/MT * .cpp d3dx9.lib d3d9.lib dwmapi.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32 .lib ole32.lib oleaut32.lib uuid.lib/link/FORCE:MULTIPLE/LIBPATH:「%DXSDK_DIR%\ Lib \ x64 \」/ SUBSYSTEM:CONSOLE /OUT:PH.exe – Friwi

回答

1

您指向您的命令行上的64位DirectX庫。您需要使用32位庫。

相關問題