2016-02-29 82 views
0

我在NVdia Cuda体系结构上使用ATL(https://msdn.microsoft.com/en-us/library/3ax346b7.aspx)时遇到了一些问题。CUDA上的ATL发生编译错误

我已经在Visual Studio 2010中CUDA7.5项目,只是增加

#include <afxwin.h> 

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

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

但是,当我试图编译它,发生错误。 错误没有C2015,C2017,C2143,这是关于语法错误发生的“atlbase.h”,我从来没有修改。

您有任何解决方案在CUDA上使用ATL吗?

PS。 ATL在MVCC上运行良好,不是缺少头文件,dll等问题

回答

1

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

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

如果您在.cu文件中使用ATL的实际使用情况,我会建议联系NVIDIA开发人员支持人员并提出缺陷报告/功能请求。