0
的代码如下代码:如何构建包含CUDA功能和C++模板函数
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <list>
#include <iterator>
#include <stdio.h>
template<class T> void InsertValueNode(std::list<T> &ValueList,T NewValue)
{
std::list<T>::iterator itCurVal = ValueList.begin();
while(itCurVal != ValueList.end())
{
if(NewValue < (*itCurVal))
break;
itCurVal++;
}
std::insert_iterator< std::list<T> > itNewNode(ValueList, itCurVal);
*itNewNode = NewValue;
}
__global__ void addKernel(int *c, const int *a, const int *b)
{
int i = threadIdx.x;
c[i] = a[i] + b[i];
}
//to simplify the problem, just imply an empty main function
int main()
{
return 0;
}
的上式的代码是在Visual Studio 2010中的项目一.CU文件。问题是,编译时编译器不能识别STL迭代器的定义:
error : identifier "itNumerical" is undefined
error : identifier "itCurVal" is undefined
error : expected a ";"
如果我重命名文件的.cpp和重建,该代码可以编译,但是链接错误“错误LNK2001:无法解析的外部符号threadIdx “发生。 那么如何构建代码呢?