This question already has an answer here:
Why does nvcc fails to compile a CUDA file with boost::spirit?
(1个答案)
4年前关闭。
我在NVdia Cuda架构上使用ATL(https://msdn.microsoft.com/en-us/library/3ax346b7.aspx)时遇到一些问题。
我已经在Visual Studio 2010上制作了CUDA7.5项目,并且刚刚添加了
到我的默认源文件kernel.cu。
由于afxwin.h需要Microsoft MFC库,因此我将项目属性更改为使用Shared MFC库。
但是当我尝试编译它时,会发生错误。
错误C2015,C2017,C2143,这是与我从未修改过的“atlbase.h”有关的语法错误。
您有在CUDA上使用ATL的解决方案吗?
PS。 ATL在MVCC上运行良好,不是缺少头文件,dll等问题
(1个答案)
4年前关闭。
我在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库,因此我将项目属性更改为使用Shared MFC库。
但是当我尝试编译它时,会发生错误。
错误C2015,C2017,C2143,这是与我从未修改过的“atlbase.h”有关的语法错误。
您有在CUDA上使用ATL的解决方案吗?
PS。 ATL在MVCC上运行良好,不是缺少头文件,dll等问题
最佳答案
已知CUDA C++前端无法在非常复杂的模板声明上失败(据报道,至少将boost,eigen,QT包含在.cu
文件中时,编译失败)。
唯一的解决方案是将ATL代码隔离到.cpp
文件中,而不将那些 header 包含在.cu
文件中。 nvcc不会尝试通过CUDA C++解析器在.cpp
文件中发送代码,并且不会出现任何错误。您可能需要在.cu
文件中提供包装函数,以将包含代码的ATL链接到CUDA代码,具体取决于您的应用程序设计。
如果您有在.cu
文件中使用ATL的实际用法,建议您与NVIDIA开发人员支持联系并提出错误报告/功能请求。
关于c++ - CUDA上的ATL发生编译错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35691105/
10-17 01:41