【发布时间】:2014-01-30 14:23:03
【问题描述】:
我正在尝试解决以下问题:我有一个使用 C++Amp 的库。该库编译时没有任何警告,并且单元测试表明一切正常。我有一个基于 QT 的项目,它是这个库的 GUI,问题就从这里开始了。每次我编译 GUI 时,在链接阶段都会出现以下错误:
widgets.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) private: unsigned short const * __cdecl Concurrency::accelerator::_Get_device_path(void)const " (_imp?_Get_device_path@加速器@Concurrency@@AEBAPEBGXZ) 在函数“void __cdecl `dynamic initializer for 'public: static class std::_Future_error_category std::_Future_error_object::_Future_object''(void)”(??__E?_Future_object@?$_Future_error_object@ H@std@@2V_Future_error_category@2@A@@YAXXZ)
该库链接到 lib 文件,而不是 dll。
项目中的其他目标文件也是如此。在使用 C++Amp 时,有没有人在链接阶段遇到过类似的问题。我确信这是一个非常容易解决的问题,但目前我不知道该怎么做。提前致谢。
更新:当我尝试将 QT 项目包含在 MSVC++ 中时,也会发生同样的情况。
【问题讨论】:
-
我假设你得到了这些?您似乎没有将 AMP 二进制文件链接到您的 QT 项目中。
-
是的,我收到了很多。实际上我有一个静态库项目(ccilib),它是一个静态库(lib 文件),当我尝试运行与 cci 项目链接的 QT 项目(GUI)时会出现问题。我应该如何链接 AMP 二进制文件?
-
您的编译器设置错误。在将 C/C++、语言、将 wchar_t 视为内置类型重置为默认值之前,您无法获得链接代码。您需要在所有编译代码中一致地使用此设置,包括 Qt。
-
我应该如何为 QT 更改它?重新编译?
-
我按照你说的设置了,还是不行。
标签: c++ qt visual-c++ linker c++-amp