2016-02-29 3 views
0

У меня есть некоторые проблемы с использованием ATL (https://msdn.microsoft.com/en-us/library/3ax346b7.aspx) на архитектуре NVdia Cuda.ATL на CUDA встречается ошибка компиляции

Я сделал CUDA7.5 проект на Visual Studio 2010, и только добавил

#include <afxwin.h> 

в мой исходный файл по умолчанию, kernel.cu.

Поскольку afxwin.h нуждается в библиотеках Microsoft MFC, я изменил свойства своего проекта на использование общих библиотек MFC.

Но когда я попытался скомпилировать его, произойдет ошибка. ОШИБКА NO C2015, C2017, C2143, которая связана с ошибкой грамматики для «atlbase.h», которую я никогда не изменял.

У вас есть решения для использования ATL на CUDA?

PS. ATL хорошо работает на MVCC, а не проблема отсутствия файла заголовка, dll и т. Д.

ответ

1

Известно, что передняя часть CUDA C++ выходит из строя при очень сложных объявлениях шаблонов (по крайней мере, boost, self, QT были указаны здесь сбой при компиляции, если он включен в файл .cu).

Единственным решением является карантин кода ATL в файлы .cpp и не включать эти заголовки в файлы .cu. nvcc не будет пытаться отправить код в пределах .cpp файлов через CUDA C++ парсер и ошибок не будет. Возможно, вам понадобится предоставить функции-обертки в файлах .cu, чтобы связать код, содержащий ATL, с кодом CUDA, в зависимости от вашего дизайна приложения.

Если у вас есть реальный пример использования ATL внутри файла .cu, я бы посоветовал обратиться за поддержкой разработчика NVIDIA и получить сообщение об ошибке/запрос функции.