在我从旧版DirectX SDK更改为Windows SDK(Visual Studio 2015)后,链接器一直在抱怨
The linker keeps complaining after I changed from legacy DirectX SDK to Windows SDK (Visual Studio 2015))
我刚刚删除了DirectX SDK中包含的所有标头,并转向了Windows SDK,但一旦删除,链接器就会不断抱怨"未解析的外部符号"。链接器显示了大约24个错误,其中大多数错误是关于我甚至没有在游戏中使用的函数。
链接器错误:error LNK2001: unresolved external symbol "union __m128 __vectorcall DirectX::XMVectorMultiply(union __m128,union __m128)
error LNK2001: unresolved external symbol "union __m128 __vectorcall DirectX::XMVectorSubtract(union __m128,union __m128)
error LNK2001: unresolved external symbol "union __m128 __vectorcall DirectX::XMVector3Normalize(union __m128)
error LNK2001: unresolved external symbol "union __m128 __vectorcall DirectX::XMVectorSet(float,float,float,float)
我在应用程序中没有使用XMVector3Normalize()
、XMVectorSubtract()
和XMVectorMultiply()
,但我使用了XMVectorSet()
。
这些函数中的大多数都是DirectXMath.h
的一部分,所以这里可能有什么问题。
无论如何,我不知道这是否会有所帮助,但下面是我在应用程序中使用的所有标题。
#include <windows.h>
#include <D3D11.h>
#include <dinput.h>
#include <SimpleMath.h>
#include <D3Dcompiler.h>
#include <sstream>
#include <SpriteFont.h> //This file also includes DirectXMath.h
#include <DDSTextureLoader.h>
#include <WICTextureLoader.h>
#pragma comment (lib, "D3D11.lib")
#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")
#pragma comment (lib, "d3dcompiler.lib")
"未解析符号"表示直接调用这些函数,或者由正在调用的函数调用。调用的函数必须由编译并链接到应用程序中的源代码定义,或者必须由链接到应用程中的库定义。
DirectX数学库在标题中完全定义;没有可链接的库。它们的定义在DirectXMath.h
包含的各种DirectX Math .inl
文件中。
换句话说,您几乎不可能包含声明这些函数的头文件,而而不是获得它们的实现。
由于我不在你的电脑旁,我无法确切地告诉你是什么导致了这种情况。要确定实际原因,您应该将问题简化为再现问题的尽可能小的程序,例如创建一个仅包含DirectXMath.h
的新项目,并使用函数XMVectorMultiply
执行矢量乘法并打印结果。
一旦你让这个简单的程序工作起来,然后将它与你的程序进行比较,看看差异,找出错误的根源。
这与您在运行时调试应用程序时所经历的过程相同,只是您在调试构建而不是应用程序。
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 使用外部SDK工具链文件在VisualStudio上生成项目编译错误
- vs 2015 constexpr变量不恒定,但与2019相比还好吗
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- 从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因
- VS 2015 链接错误 无法构建依赖于 libcurl 的项目
- 升级到 Windows 10 版本 1809 SDK 后,我无法编译使用 C++/WinRT 的项目
- 在设计 SDK 时,我是否应该在 C++ 头文件中完全隐藏内部类?
- Eventloop 卡住:NAO C++ SDK OnFaceDetection 示例
- 构建失败错误:无法使用 qibuild 构建C++ SDK Helloworld
- Qt Visual Studio 2015 加载项编译问题
- 包含在 <WinSock2> Visual Studio 2015 中时出现错误
- Microsoft C++ 用于图形 API 的 Rest SDK
- 如何检索 Steamwork SDK 的当前版本
- 佳能SDK无法从相机下载图片
- 如何使用 CPP REST SDK 实现 CAS(中央认证服务)?
- 在 Windows 10 上的 Visual Studio 2015 中使用 _open 和 _setmode
- 将SDK与Visual Studio 2015链接到项目
- 在我从旧版DirectX SDK更改为Windows SDK(Visual Studio 2015)后,链接器一直在抱怨
- Qt + MSVC 2015 + Firebase SDK v1.0.0