1

我有以下 main.cpp 文件:

#include <amp.h>
using namespace concurrency;
int main()
{
  int arr[] = {42};
  array_view<int, 1> v(1, arr);
  return 0;
}

和一个 .pro 文件:

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

QMAKE_CXXFLAGS += -EHsc
SOURCES += main.cpp

如果我从 Visual Studio 2012 命令行编译 main.cpp(仅使用 cl /EHsc main.cpp),一切正常。但是如果我使用 qmake 和 nmake 总是会出现链接错误,即存在未解析的外部符号(来自 amp)。有谁知道如何解决这个问题?

4

2 回答 2

2

我想通了,问题是什么:在 mkspec 文件 qmake.conf 中,编译器标志Zc:wchar_t-会导致编译器wchar_t错误地转换某些类型,因此无法解析生成的符号。

要解决此问题,请将上述 .pro 文件更改为

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

QMAKE_CXXFLAGS += -EHsc -Zc:wchar_t
SOURCES += main.cpp

(将 -Zc:wchar_t 添加到 QMAKE_CXXFLAGS)。

于 2012-12-14T11:47:24.210 回答
0

您忘记添加

LIBS += -lname_of_the_amp_lib

抱歉,我不知道库的名称...

于 2012-12-13T18:17:05.563 回答