Войти
ПрограммированиеФорумОбщее

Ошибка в DirectXMath.h

#0
14:28, 29 янв. 2013

Подробнее. Пустой проект, созданный встроенным в visual studio qt designer. Включенный в один файл DirectXMath.h. При компиляции на строке 370

explicit XMMATRIX (_In_reads_(16) const float *pArray);
начинаются ошибки:
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2061: syntax error : identifier '_In_reads_'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2059: syntax error : ')'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2143: syntax error : missing ')' before ';'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2535: 'DirectX::XMMATRIX::XMMATRIX(void)' : member function already defined or declared
1>          C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(364) : see declaration of 'DirectX::XMMATRIX::XMMATRIX'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2061: syntax error : identifier '_In_reads_'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2059: syntax error : ')'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2143: syntax error : missing ')' before ':'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2535: 'DirectX::XMFLOAT2::XMFLOAT2(void)' : member function already defined or declared
1>          C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(404) : see declaration of 'DirectX::XMFLOAT2::XMFLOAT2'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2065: 'pArray' : undeclared identifier
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2065: 'pArray' : undeclared identifier
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): fatal error C1903: unable to recover from previous error(s); stopping compilation
1>  PrimitiveBuilder.cpp
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2061: syntax error : identifier '_In_reads_'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2059: syntax error : ')'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2143: syntax error : missing ')' before ';'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(370): error C2535: 'DirectX::XMMATRIX::XMMATRIX(void)' : member function already defined or declared
1>          C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(364) : see declaration of 'DirectX::XMMATRIX::XMMATRIX'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2061: syntax error : identifier '_In_reads_'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2059: syntax error : ')'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2143: syntax error : missing ')' before ':'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2535: 'DirectX::XMFLOAT2::XMFLOAT2(void)' : member function already defined or declared
1>          C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(404) : see declaration of 'DirectX::XMFLOAT2::XMFLOAT2'
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2065: 'pArray' : undeclared identifier
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): error C2065: 'pArray' : undeclared identifier
1>C:\Program Files (x86)\Windows Kits\8.0\Include\um\DirectXMath.h(406): fatal error C1903: unable to recover from previous error(s); stopping compilation
1>  Generating Code...
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.96
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Я бы мог погуглить и исправить сам хедер. Но, кажется, тогда проблемы полезут валом(ну нельзя править стандартные заголовочные файлы). Учитывая то, что проект действительно пустой, что делать?


#1
14:32, 29 янв. 2013

скорее всего нужно что то продефайнить

#2
18:56, 21 мая 2013

Не знаю актуально лие еще. Но можно попоробовать пофиксить SAL2-аннотацию в 2010-й студии, вставив

#if defined(_MSC_VER) && (_MSC_VER<1610) && !defined(_In_reads_)
 #define _Analysis_assume_(exp) __analysis_assume(exp)
 #define _In_reads_(exp) _In_count_c_(exp)
 #define _Out_writes_(exp) _Out_cap_c_(exp)
 #define _In_reads_bytes_(exp) _In_bytecount_x_(exp)
 #define _Out_writes_bytes_(exp) _Out_bytecap_x_(exp)
 #endif
 
 #ifndef _Use_decl_annotations_
 #define _Use_decl_annotations_
 #endif

перед включением DirectXMath.h

ПрограммированиеФорумОбщее

Тема в архиве.