2015-11-02 22 views
0

по какой-то причине я уже получил «нерешенным внешний символ» ошибка, и я просто не могу понять, почему ..неразрешенный внешний символ ошибки ++ VS15 d3dx9 библиотека C

Он жалуется на "__snprintf », "__sprintf" и "__vsnprintf", хотя я даже не используя те ..

Изображение составителя:

enter image description here

Как вы можете видеть, я использую d3dx9.lib и это мой включает в себя & библиотеки:

#include <Windows.h> 
#include <iostream> 
#include <stdio.h> 

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

Единственный код я использую Printf в:

void v_DrawText(int X, int Y, D3DCOLOR Color, ID3DXFont *font, const char* sText, ...) 
{ 
    char sText_[1024] = ""; 
    va_list ap; 

    if (!sText || *sText == '\0') 
     return; 

    va_start(ap, sText); 
    _snprintf_s(sText_, 1024, 1023, sText, ap); 
    va_end(ap); 

    RECT Position = { X, Y, X + 500, Y + 50 }; 
    font->DrawText(NULL, sText_, -1, &Position, DT_LEFT | DT_WORDBREAK, Color); 
} 

Я уже пробовал перестраивая решение с земли, перегружая библиотеку, добавляя ее непосредственно к компоновщику .. но нет. Просто не будет работать ..

Конфигурация проекта (по запросу):

enter image description here

+0

Показать конфигурацию проекта пожалуйста. –

+1

Этот каталог SDK выглядит очень сломанным с помощью '% 28'. Попробуйте изменить это на 'Program Files (x86)'. Если у вас есть те же проблемы при запуске нового проекта, вам необходимо исправить вашу установку SDK. – MicroVirus

+0

выглядит как не связанный с соответствующей библиотекой lib. связано ли это с msC++ runtime? – DTSCode

ответ

0

Имейте в виду, что D3DX9D3DX10, D3DX11) и DirectX SDK все осуждается. См. MSDN. VS 2010 была последней версией, официально поддерживаемой D3DX9 с DirectX SDK (июнь 2010 г.). В общем случае библиотеки импорта должны работать, но статические библиотеки, скорее всего, не сработают.

Обратите внимание, что DXERR.LIB не работает с VS 2015, поскольку ЭЛТ изменилась. См. this thread.

Вы все еще используете DirectX SDK 9.0b с лета 2004 г., который в то время поддерживается VS .NET 2002 и VS .NET 2003. Если вам все еще нужно использовать устаревшую D3DX9, перейти к DirectX SDK (июнь 2010) выпуск. См. this post.

Кроме того, у вас есть пулы include/lib, неправильно настроенные для смешивания устаревшего пакета DirectX SDK с SDK Windows 8.x, который поставляется с VS 2012 или более поздней версией. См. Инструкции на MSDN для правильного пути, который является обратным того, что у вас есть в настоящее время.

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

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