首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LNK2019创建GamePad时出错

使用LNK2019创建GamePad时出错
EN

Stack Overflow用户
提问于 2016-04-05 18:55:36
回答 2查看 998关注 0票数 0

我正在跟踪关于如何将一个DirectXTK GamePad教程嵌入到我的应用程序中的GamePad,但是在尝试创建GamePad时,我得到了一个errorLNK2019。

到目前为止我已经:

  • GamePad.h包含到我的Controller头文件中
  • 已添加 std::unique_ptr mGamePad; 在我的控制器课上
  • 在主计长::Init()添加 mGamePad = std::make_unique();

当我添加最后一行代码时,我会得到错误(loong错误):

代码语言:javascript
复制
DirectXTK.lib(GamePad.obj) : error LNK2019: unresolved external symbol __imp_RoGetActivationFactory referenced in function "long __cdecl ABI::Windows::Foundation::GetActivationFactory<struct ABI::Windows::Gaming::Input::IGamepadStatics>(struct HSTRING__ *,struct ABI::Windows::Gaming::Input::IGamepadStatics * *)" (??$GetActivationFactory@UIGamepadStatics@Input@Gaming@Windows@ABI@@@Foundation@Windows@ABI@@YAJPEAUHSTRING__@@PEAPEAUIGamepadStatics@Input@Gaming@12@@Z)
DirectXTK.lib(GamePad.obj) : error LNK2019: unresolved external symbol WindowsCreateStringReference referenced in function "private: void __cdecl Microsoft::WRL::Wrappers::HStringReference::CreateReference(wchar_t const *,unsigned int,unsigned int)" (?CreateReference@HStringReference@Wrappers@WRL@Microsoft@@AEAAXPEB_WII@Z)
fatal error LNK1120: 2 unresolved externals

在我的应用程序中,我已经没有任何问题地使用了SpriteBatch,所以我猜想,当我将DirectXTK包含到解决方案中时,我已经完成了所有正确的事情。

我还尝试使用以下方法创建GamePad

代码语言:javascript
复制
mGamePad.reset( new GamePad() );

这是我在教程的旧版中发现的。

还有..。控制器被插入。对我做错了什么有什么建议吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-06 00:44:55

您必须将您的项目链接到RuntimeObject.lib

票数 3
EN

Stack Overflow用户

发布于 2016-04-07 06:34:20

当DirectX工具包的GamePad类是为Windows 10构建的(即_WIN32_WINNT=0x0A00)时,它使用新的Windows.Gaming.Input Windows类而不是XINPUT。

如果您正在构建通用Windows平台,那么您已经初始化了Windows,_WIN32_WINNT=0x0a00,并且很可能是针对RuntimeObject.lib进行链接的。

如果您正在构建一个Windows桌面(也称为Win32或“经典”应用程序),那么首先要确保您真的打算只为Windows 10制作它。有一个大量不同的vcxproj文件 for DirectX工具包,具体取决于您所针对的平台。如果您确实希望只针对Windows 10的Windows桌面应用程序,这是完全酷,但您将需要显式初始化Windows运行时为您的应用程序。

TL;DR:如果您正在制作一个需要Windows 10的Windows桌面应用程序,那么使用RuntimeObject.lib链接并将其添加到应用程序初始化中(替换CoInitializeCoInitializeEx):

代码语言:javascript
复制
Microsoft::WRL::Wrappers::RoInitializeWrapper initialize(RO_INIT_MULTITHREADED);
if (FAILED(initialize))
    return 1;

如果您没有开发需要Windows 10的Windows桌面应用程序,也没有开发通用Windows平台(UWP)应用程序,那么请使用为Windows7兼容性而构建的不同版本的DirectX工具包。

请参阅这个职位

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36434790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档