DirectX xnacollision

DirectX xnacollision

本文关键字:xnacollision DirectX      更新时间:2023-10-16

我一直在用directX和C++与2010年的版本玩xnacollision,但我一直收到这个错误。

Error   1   error LNK2019: unresolved external symbol "int __cdecl XNA::IntersectSphereSphere(struct XNA::Sphere const *,struct XNA::Sphere const *)" (?IntersectSphereSphere@XNA@@YAHPBUSphere@1@0@Z) referenced in function "public: virtual void __thiscall PhysicsApp::UpdateScene(float)" (?UpdateScene@PhysicsApp@@UAEXM@Z)   C:UsersAndrewDesktopPhysics 20 Percent ProjectPhysicsDemo.obj  PhysicsDemo

当我做这个

XNA::Sphere sphere1, sphere2;
sphere1.Radius = 1.0f;
sphere1.Center = XMFLOAT3(0.0f, 0.0f, 0.0f);
sphere2.Radius = 1.0f;
sphere2.Radius = XMFLOAT3(2.0f, 0.0f, 0.0f);
int collision = XNA::IntersectSphereSphere(&sphere1, &sphere2);

我已经包含了xnacollision.h

#include处理头文件并不是让这些事情发挥作用所需要做的唯一事情。您还必须链接到相应的.lib文件,这正是链接器所抱怨的。您需要检查您的链接器设置,并确保您的搜索路径是正确的,并且已经处理了必要的外部依赖关系。

XNACollion不仅仅是一个标头。它既是一个头文件,也是一个cpp文件,作为Direct3D 9 Collision示例的一部分在旧版DirectX SDK中提供。它不是传统D3DX11库的一部分。

在Windows8.xSDK中,DirectXMath包含来自XNACollision.h/.cpp的冲突类型,作为DirectXCollision.h的标准include标头的一部分(它都是内联的,因此没有.cpp文件或.lib)。有一个使用它的冲突示例的更新版本。

请参阅DirectXMath简介。

既然您使用的是D3DX11和XNAMath,那么很明显您使用的就是传统的DirectX SDK。请注意,这两种方法都已弃用。请参阅MSDN和没有D3DX的生活。