2015-11-07 2 views
1

Я пытаюсь скомпилировать некоторый код для визуализации файлов в окнах, которые не принадлежат моему приложению. Я хочу использовать DirectX 9 для достижения этого, но по какой-то причине ошибки компоновщика убивают меня прямо сейчас.LNK2019: Неразрешенный символ

Im, включая все мои библиотеки в файле .h (см. Main.h ниже).

Теперь я включаю этот файл .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, возникают неразрешенные ошибки символов.

Я был бы очень признателен за любую помощь, которую я мог получить, уже потратил впустую на это время.

Edit: Ошибка

Errormessage

+0

Конечно :) Как вы видите, я переформулировал свой вопрос точнее, как вы просили до – Friwi

+1

Вы запустили файл .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-битные библиотеки.

 Смежные вопросы

  • Нет связанных вопросов^_^