c++ - 为什么 nvcc 无法使用 boost::spirit 编译 CUDA 文件?

标签 c++ boost cuda boost-spirit nvcc

我正在尝试将 CUDA 集成到使用 boost::spirit 的现有应用程序中。

隔离问题,我发现下面的代码不能与 nvcc 编译:

main.cu:

#include <boost/spirit/include/qi.hpp>
int main(){
    exit(0);
}

nvcc -o cudaTest main.cu编译我得到了很多可以看到的错误here .

但是如果我将文件名更改为 main.cpp,并使用 nvcc 再次编译,它就可以工作了。这里发生了什么,我该如何解决?

最佳答案

nvcc 有时在编译复杂的模板代码时遇到问题,例如在 Boost 中发现的代码,即使该代码仅用于 __host__ 函数。

当文件的扩展名为 .cpp 时,nvcc 本身不执行解析,而是将代码转发给主机编译器,这就是为什么您观察到不同行为的原因文件扩展名。

如果可能,请尝试将依赖于 Boost 的代码隔离到不需要被 nvcc 解析的 .cpp 文件中。

我还会确保尝试使用最近的 CUDA 4.1 附带的 nvcc . nvcc 的模板支持随着每个版本的改进而改进。

关于c++ - 为什么 nvcc 无法使用 boost::spirit 编译 CUDA 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8138673/

相关文章:

c++ - boost图形库: named_graph and remove_vertex

c++ - cuRAND 期望一个表达式

loops - 如何使用嵌套 for 循环将两个二维(倾斜)数组相加?

c++ - 使用boost.asio在Linux系统上编译mingw32可执行文件的问题

c# - C++ STL 集合和 C# 集合的比较?

c++ - 为什么 clang 输出对齐特定的东西

c++ - 如何将字节形式的输入写入输出文件?

c++ - 在 mac osx leopard 上安装 c++ boost——端口失败

cuda - 我们如何使用 cuPrintf()?

c++ - 在 MinGW/MSYS 上编译 GCC 4.x.x 失败