【发布时间】:2011-11-16 00:20:17
【问题描述】:
我目前正在编写一个 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
我在网上搜索发现是因为NVCCcannot handle the certain constructs used in the boost code但是NVCC应该将宿主代码的编译委托给C++编译器。就我而言,我使用的是 Visual Studio 2010,因此主机代码应传递给 cl。
由于 NVCC 似乎感到困惑,我什至为 boost 内容编写了一个简单的包装器,并将其放入单独的 .cpp(而不是 .cu)文件中,但我仍然遇到构建错误。奇怪的是,在编译我的 main.cu 而不是 wrapper.cpp 时会引发错误,但即使 main.cu 不包含任何 boost 代码,它仍然是由 boost 引起的。
有人知道这个问题的解决方案甚至解决方法吗?
【问题讨论】:
-
main.cu 是否包含其他包含 boost 代码的文件?
-
是的,实际上它包括
wrapper.h,其中包括boost\program_options.hpp。有没有什么好的方法可以将两者分开?