1

我正在尝试解决以下问题:我有一个使用 C++Amp 的库。该库编译时没有任何警告,并且单元测试表明一切正常。我有一个基于 QT 的项目,它是这个库的 GUI,问题就从这里开始了。每次我编译 GUI 时,在链接阶段都会出现以下错误:

部件。 “void __cdecl 'public 的动态初始化器:静态类 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++ 中时,也会发生同样的情况。

4

1 回答 1

2
  __imp_?_Get_device_path@accelerator@Concurrency@@AEBAPEBGXZ

在该字符串上运行 undname.exe 实用程序以解开名称,我得到:

  declspec(dllimport) private: 
  unsigned short const * __ptr64 
  __cdecl Concurrency::accelerator::_Get_device_path(void)const __ptr64

所以它是64位代码。在 vc/lib/amd64/vcamp.lib 中查找最接近的匹配项,我发现:

 ?_Get_device_path@accelerator@Concurrency@@AEBAPEB_WXZ

哪个与 undname.exe 一起解构:

 private: 
 wchar_t const * __ptr64 
 __cdecl Concurrency::accelerator::_Get_device_path(void)const __ptr64

注意差异。你的函数被编译返回unsigned short*,库函数返回wchar_t*。您的编译器设置错误。Project + Properties、C/C++、Language、Treat WChar_t As Built in Type 必须设置为默认值“是”。

于 2014-01-30T23:00:03.153 回答