1

最近、次のような関数を書きました。

#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エラーは消えましたが、この関数を他のプログラムにエクスポートできなくなりました。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

1

TMP環境変数の値に非 ASCII 文字が含まれていると、エラー C1451 が報告されることが確認されています。一時的な回避策は、ユーザー環境変数を eg に設定することですC:\tmp

于 2013-11-01T19:36:11.100 に答える