我目前正在编写一个 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无法处理 boost 代码中使用的某些结构,但 NVCC 应该将主机代码的编译委托给 C++ 编译器。就我而言,我使用的是 Visual Studio 2010,因此主机代码应传递给cl
.
由于 NVCC 似乎很困惑,我什至在 boost 内容周围编写了一个简单的包装器,并将其粘贴在一个单独的.cpp
(而不是 . .cu
)文件中,但我仍然遇到构建错误。奇怪的是,错误是在编译 mymain.cu
而不是时引发的,wrapper.cpp
但仍然是由 boost 引起的,即使main.cu
不包含任何 boost code。
有人知道这个问题的解决方案甚至解决方法吗?