#include在.cpp文件中工作,但如果我将其移到标题

时间:2015-10-19 10:31:39

标签: c++ include opencl

关于在头文件中包含语句,我可能有一个非常简单的问题。 我有以下工作:

IPlatformHelper.h:

#pragma once    
#include <vector>
class IPlatformHelper
{
public:
    virtual int GetNumberOfPlatforms() = 0;
    virtual ~IPlatformHelper() {};
};

PlatformHelper.h:

#pragma once

#include "IPlatformHelper.h"

class PlatformHelper :
    public IPlatformHelper
{
public:
    PlatformHelper();
    virtual int GetNumberOfPlatforms();
    virtual ~PlatformHelper();
};

PlatformHelper.cpp:

#include "stdafx.h"
#include "PlatformHelper.h"

#include <CL/cl.h>


PlatformHelper::PlatformHelper()
{
}

int PlatformHelper::GetNumberOfPlatforms()
{
    cl_uint numPlatforms;
    cl_platform_id platforms;
    auto result = clGetPlatformIDs(1, &platforms, &numPlatforms);
    return (int)numPlatforms;
}

PlatformHelper::~PlatformHelper()
{
}

使用CL / cl.h中公开的方法正确运行。 但是,我想在界面中添加更多有用的方法,包括带有涉及CL / cl.h类的签名的方法:

#pragma once

#include <vector>
#include <CL/cl.h>

class IPlatformHelper
{
public:
    virtual std::vector<cl_platform_id> GetPlatform() = 0;
    virtual int GetNumberOfPlatforms() = 0;
    virtual ~IPlatformHelper() {};
};

所以我将其更新为此,并实现其他文件中的方法。但这给了我错误:

  

“错误1错误C1083:无法打开包含文件:'CL / cl.h':没有这样的文件或目录”。

所有3个文件都在同一个目录中,当我添加include时,intellisense会建议该文件。 我试过添加一个前向声明而不是include:

class cl_platform_id;

但这会导致错误

  

“错误1错误C2040:'cl_platform_id':'_ cl_platform_id *'的间接级别与'cl_platform_id'不同”

0 个答案:

没有答案