【问题标题】:Compiling C++ AMP using qmake fails使用 qmake 编译 C++ AMP 失败
【发布时间】:2012-12-13 13:22:20
【问题描述】:

我有以下 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)。有人知道如何解决这个问题吗?

【问题讨论】:

    标签: qt visual-c++ qmake c++-amp


    【解决方案1】:

    我想通了,问题出在哪里:在 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)。

    【讨论】:

    • 您应该将您的答案作为答案,这样他们就不会出现在未回答的问题列表中。干杯。
    • 嘿,我遇到了类似的问题(qt,MSVC++),但我使用的是 MSVC++ 编译器(不是 qmake)。我应该把这个修饰符放在哪里?
    【解决方案2】:

    你忘了添加

    LIBS += -lname_of_the_amp_lib
    

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

    【讨论】:

    • 编译器本身会注意链接所需的导入库。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    相关资源
    最近更新 更多