В настоящее время я пишу приложение CUDA и хочу использовать boost:: program_options для получения необходимых параметров и пользовательского ввода.
Проблема, с которой я сталкиваюсь, заключается в том, что NVCC не может справиться с компиляцией файла повышения any.hpp
, выдавая такие ошибки, как
1>C:\boost_1_47_0\boost/any.hpp(68): error C3857: 'boost::any': multiple template parameter lists are not allowed
Я провел поиск в Интернете и обнаружил, что это связано с тем, что NVCC не может обрабатывать определенные конструкции, используемые в коде повышения, но NVCC должен делегировать компиляцию основного кода компилятору C++. В моем случае я использую Visual Studio 2010, поэтому код хоста должен быть передан в cl
.
Поскольку NVCC, похоже, запутался, я даже написал простую оболочку для наддува и поместил ее в отдельный файл .cpp
(вместо .cu
), но я все еще получаю ошибки сборки. Как ни странно, ошибка выдается при компиляции моего main.cu
вместо wrapper.cpp
, но все же вызвана повышением, хотя main.cu
не включает никакого кода повышения.
Кто-нибудь знает решение или хотя бы обходной путь для этой проблемы?
wrapper.h
, который включаетboost\program_options.hpp
. Есть ли хороший способ разделить их? - person Dan   schedule 13.09.2011