最近我写了一个这样的函数:
#include "amp.h"
#define DLLExport __declspec(dllexport)
using namespace concurrency;
namespace dll
{
class SomeMethods
{
public:
static DLLExport double CalcConvolution(double* mask, double* map, int size)
{
array_view<const double, 1> avMask(size, mask);
array_view<double, 1> avOMap(size, map);
array_view<double, 1> avCache(size, new double[size]);
avCache.discard_data();
parallel_for_each(
avCache.extent,
[=](index<1> idx) restrict(amp)
{
avCache[idx] = avMask[idx] * avOMap[idx];
}
);
avCache.synchronize();
double sum = 0;
auto cache = avCache.data();
for (int i = 0; i < size; i++)
sum += cache[i];
return sum;
}
};
}
Visual Studio报告了以下错误:
错误C1451:编译concurrency :: parallel_for_each
的调用图时无法生成调试信息
我删除DLLEXPORT
修饰符后,错误消失了,但我无法将此功能导出到其他程序中。
如何解决这个问题?
答案 0 :(得分:1)
我们观察到TMP
环境变量值包含非ASCII字符时报告的错误C1451。临时解决方法是将用户环境变量设置为例如C:\tmp
。