2016-02-29 92 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開發人員支持人員並提出缺陷報告/功能請求。