为了使用 OpenCL 而重新学习 C++。我创建了一个名为 CheckDevice 的 Helper 类,它有一堆用于获取设备统计信息的样板代码。
检查设备.h
class Utils
{
public:
Utils(){};
~Utils(){};
template<class T>
static bool IsNull(T Object, char* name);
private:
};
检查设备.cpp
cl_command_queue Utils::CreateCommandQueue(cl_context context, cl_device_id *device)
{
cl_int err;
cl_device_id *devices;
cl_command_queue queue = NULL;
size_t deviceBufferSize = -1;
cl_kernel kernel = 0;
Utils::IsNull<cl_command_queue>(queue, "Utils::CreateCommandQueue::queue");
return queue;
}
主文件
void main()
{
cl_kernel kernel = 0;
Utils::IsNull<cl_kernel>(kernel, "clCreateKernel");
}
问题是从 CheckDevice.cpp 中调用函数 Utils::IsNull 时,它工作正常,但是从 main.cpp 调用时,我在 Visual Studios 2012 中得到以下信息
错误 LNK2019:未解析的外部符号“公共:静态布尔 __cdecl Utils::IsNull(struct _cl_kernel *,char *)”(??$IsNull@PAU_cl_kernel@@@Utils@@SA_NPAU_cl_kernel@@PAD@Z) 在函数 _main 1 中引用>C:\Users\Suri\Documents\Visual Studio 2012\Projects\HelloWorld\Debug\HelloWorld.exe : 致命错误 LNK1120: 1 unresolved externals
任何帮助都会得到帮助