最近我寫了這樣的功能:如何使用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中報告了以下錯誤:
error C1451: Failed to generate debug information when compiling the call graph for the concurrency::parallel_for_each
只要我刪除了DLLEXPORT
修飾符,錯誤消失了,但我無法再將此函數導出到其他程序中。
我該如何解決這個問題?
我現在使用Visual Studio 2013 Professional和Windows 8.1 x64,並且在我從win7-64和VS2012升級筆記本電腦之前,代碼運行良好。 – Stephen
你好。這是一個難以解決的問題,我們無法重複複製,如果您能向我們提供更多信息,我們很樂意幫助您進行調查。您可以使用命令'cl/Bv/EHsc/MD/LD/Zi test.cpp'從Visual Studio 2013命令提示符編譯該程序嗎?如果它複製,你可以在運行該命令時共享(1)編譯器輸出,以及(2)運行'set TEMP'的結果?您可以使用此信息更新答案,或隨時通過[email protected]與我聯繫。謝謝! –
@JamesMcNellis問題似乎解決了,我成功地用你給我的命令構建了目標dll,但是我仍然無法在Visual Studio中構建項目 – Stephen