[英]Unresolved External Symbol error, C++ VS15 d3dx9 Library
由於某種原因,我收到了“無法解析的外部符號 ”錯誤,而我只是不知道為什么。
它抱怨“ __snprintf ”,“ __sprintf ”和“ __vsnprintf ”,即使我沒有使用它們。
編譯器圖片:
如您所見,我正在使用d3dx9.lib,這些是我的include&庫:
#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);
}
我已經嘗試過從頭開始重建解決方案,重新下載庫,然后將其直接添加到鏈接器中。 只是行不通..
項目配置(根據要求):
請記住, D3DX9
(和D3DX10
, D3DX11
)和DirectX SDK均已棄用。 參見MSDN 。 VS 2010是D3DX9
與DirectX SDK正式支持的最新版本(2010年6月)。 通常,導入庫應該起作用,但是靜態庫很可能不起作用。
請注意,DXERR.LIB不適用於VS 2015,因為CRT已更改。 有關詳細信息,請參見此線程 。
您仍在使用2004年夏季開始的DirectX SDK 9.0b,該版本當時支持VS .NET 2002和VS .NET2003。如果仍然需要使用舊版D3DX9,請移至DirectX SDK(2010年6月)發行版。 看到這篇文章 。
另外,您還錯誤地配置了包含/庫路徑,以將舊版DirectX SDK與VS 2012或更高版本隨附的Windows 8.x SDK混合使用。 有關正確的路徑順序,請參閱MSDN上的說明,這與當前的順序相反 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.