В настоящее время я пишу приложение CUDA и хочу использовать библиотеку boost:: program_options, чтобы получить требуемые параметры и пользовательский ввод.
Проблема, с которой я столкнулась, заключается в том, что NVCC не может обрабатывать компиляцию файла boost 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 должен делегировать компиляцию хост-кода для компилятора С++. В моем случае я использую Visual Studio 2010, поэтому код хоста должен быть передан в cl
.
С тех пор, как NVCC, похоже, запутался, я даже написал простую оболочку вокруг файла boost и вставил его в отдельный файл .cpp
(вместо .cu
), но я все еще получаю ошибки сборки. Похоже, что ошибка возникает при компиляции моего main.cu
вместо wrapper.cpp
, но все же вызвана повышением, даже если main.cu
не содержит код повышения.
Кто-нибудь знает о решении или даже обходном пути для этой проблемы?