2012-12-13 59 views
1

我有以下的main.cpp文件:編譯的C++ AMP使用的qmake失敗

#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,總會有一個鏈接錯誤,那裏有未解析的外部符號(來自放大器)。有人知道如何解決這個問題嗎?

回答

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)。

+0

您應該將答案作爲答案,以便它不會顯示在未答覆的問題列表中。乾杯。 –

+0

嘿,我有一個類似的問題(QT,MSVC++),但我使用MSVC++編譯器(而不是qmake)。我應該在哪裏放這個修飾符? –

0

您忘記添加

LIBS += -lname_of_the_amp_lib 

很抱歉,但我不知道的lib的名稱...

+1

編譯器本身需要注意鏈接所需的導入庫。 – MWid