【问题标题】:ATL on CUDA occurs compilation error [duplicate]CUDA 上的 ATL 发生编译错误 [重复]
【发布时间】:2016-06-11 23:50:43
【问题描述】:

我在 NVdia Cuda 架构上使用 ATL (https://msdn.microsoft.com/en-us/library/3ax346b7.aspx) 时遇到一些问题。

我在 Visual Studio 2010 上做了 CUDA7.5 项目,刚刚添加了

#include <afxwin.h>

到我的默认源文件 kernel.cu。

由于 afxwin.h 需要 Microsoft MFC 库,我已将项目属性更改为使用共享 MFC 库。

但是当我尝试编译它时,出现错误。 ERROR NO C2015, C2017, C2143,这是关于“atlbase.h”发生的语法错误,我从未修改过。

您有什么解决方案可以在 CUDA 上使用 ATL 吗?

附言。 ATL在MVCC上运行良好,不是没有头文件、dll等问题

【问题讨论】:

    标签: c++ cuda mfc atl nvcc


    【解决方案1】:

    众所周知,CUDA C++ 前端在非常复杂的模板声明中会失败(至少 boost、eigen、QT 被报告在包含到 .cu 文件中时无法编译)。

    唯一的解决方案是将 ATL 代码隔离到 .cpp 文件中,而不是将这些标头包含在 .cu 文件中。 nvcc 不会尝试通过 CUDA C++ 解析器在.cpp 文件中发送代码,并且不会出现错误。您可能需要在 .cu 文件中提供包装函数,以将包含 ATL 的代码链接到 CUDA 代码,具体取决于您的应用程序设计。

    如果您有在 .cu 文件中使用 ATL 的真实用例,我建议您联系 NVIDIA 开发人员支持并提出错误报告/功能请求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-15
      • 2016-03-06
      • 2021-12-27
      • 2014-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-02-21
      • 2016-12-16
      相关资源
      最近更新 更多