Как использовать функцию parallel_for_each и атрибут __declspec (dllexport) одновременно

Недавно я написал такую ​​функцию:

#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: не удалось сгенерировать отладочную информацию при составлении графа вызовов для параллелизма :: parallel_for_each

Как только я удалил DLLEXPORT модификатор, ошибка исчезла, но я больше не могу экспортировать эту функцию в другие мои программы.

Как мне решить эту проблему?

1

Решение

Мы наблюдали сообщение об ошибке C1451, когда TMP значение переменной среды содержит символы не ASCII. Временное решение состоит в том, чтобы установить переменную среды пользователя, например, равную. C:\tmp,

1

Другие решения

Других решений пока нет …