无法在.cu中打开包含文件

时间:2011-11-17 14:00:50

标签: c++ visual-studio-2010 cuda

我有一个visual studio c ++项目(包含VS 2010和insight 2),其中包含一个cuda文件。这是代码

Hello.h:

#pragma once

#pragma warning(push)
#pragma warning(disable:4996)
#include "thrust\device_vector.h"
#pragma warning(pop)

class Hello
{
public:
    Hello( const thrust::host_vector<unsigned long>& data );
    unsigned long Sum();
    unsigned long Max();

private:
    thrust::device_vector<unsigned long> m_data;
}

Hello.cu:

#include "thrust\host_vector.h"
#include "thrust\device_vector.h"
#include "thrust\extrema.h"

#include "Hello.h"

using namespace ::thrust;

Hello::Hello( const thrust::host_vector<unsigned long>& data )
    : m_data( data.cbegin(), data.cend() )
{
}

unsigned long
Hello::Sum()
{
    return( reduce( m_data.cbegin(), m_data.cend(), 
        ( unsigned long )0,
        plus<unsigned long>() ) );
}

unsigned long
Hello::Max()
{
    return( *max_element( m_data.cbegin(), m_data.cend() ) );
}

最后是main.cpp:

#ifdef _WIN32
    #define WINDOWS _LEAN_AND_MEAN
    #define NOMINMAX
    #include <Windows.h>
#endif

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <ppl.h> //parallel patterns library

#include "Hello.h"

using namespace ::Concurrency;

int
main( int argc, char** argv )
{
    printf( "Generating data...\n" );
    thrust::host_vector<unsigned long> host_data( 100000 );
    thrust::generate( host_data.begin(), host_data.end(), rand );
    printf( "generated %d numbers\n", host_data.size() );

    parallel_invoke(
        [host_data]()
    {
        printf( "\nRunning host code...\n" );
        unsigned long host_result = thrust::reduce( host_data.cbegin(),
            host_data.cend(), 0, thrust::plus<unsigned long>() );
        printf( "The sum is %d\n", host_result );

        host_result = *thrust::max_element( host_data.cbegin(), 
            host_data.cend(), thrust::less<unsigned long>() );
        printf( "The max is %d\n", host_result );
    },
        [host_data]()
    {
        printf( "\nCopying data to device...\n" );
        Hello hello( host_data );

        printf( "\nRunning CUDA device code...\n" );
        unsigned long device_result = hello.Sum();
        printf( "The sum is %d\n", device_result );

        printf( "\nRunning CUDA device code...\n" );
        device_result = hello.Max();
        printf( "The max is %d\n", device_result );
    }
    );

    return( 0 );
}

此代码来自:here

我的问题是,当我构建项目时,它给了我这个错误:

Hello.cu(5): fatal error C1083: Cannot open include file: 'Hello.h': No such file or  directory

然而,当我右键单击“include”Hello.h“”时,它找到文件就好了。

我已添加了我的.h所在的文件夹,其中包含项目的附加目录。所以我真的不知道为什么它无法打开文件。

我不知道是否更多的配置问题可能是我忘记的c ++事情......

1 个答案:

答案 0 :(得分:1)

您的.cu文件很可能有自定义构建规则来使用NVCC。右键单击.cu文件并查看其属性。构建规则将再次包含其他包含目录的部分。确保包含标题的目录也存在。