最近、次のような関数を書きました。
#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
エラーは消えましたが、この関数を他のプログラムにエクスポートできなくなりました。
この問題を解決するにはどうすればよいですか?