1
Qt 라이브러리를 정적으로 연결하려고합니다. Windows에서 MSVC를 사용하여 Botan을 구축 중이며 다음 오류가 발생합니다.MSVC를 사용하여 Windows의 Botan에 정적으로 링크 할 때의 문제
..\..\3rdparty\temp\botan-msvc\build\include\botan/secmem.h(129) : error C2589: '(' : illegal token on right side of '::'
..\..\3rdparty\temp\botan-msvc\build\include\botan/secmem.h(128) : while compiling class template member function 'void Botan::MemoryRegion<T>::copy(const T [],size_t)'
with
[
T=Botan::byte
]
..\..\3rdparty\temp\botan-msvc\build\include\botan/buf_comp.h(41) : see reference to class template instantiation 'Botan::MemoryRegion<T>' being compiled
with
[
T=Botan::byte
]
..\..\3rdparty\temp\botan-msvc\build\include\botan/secmem.h(129) : error C2059: syntax error : '::'
이것은 MinGW에서는 발생하지 않습니다. 그것은 또한 모든 Botan 관련 코드를 주석 처리 할 때 발생합니다. 이것이 의미하는 바는 무엇이며 어떻게 해결할 수 있습니까? 또한 MinGW에서 발생하지 않는 이유는 무엇입니까?
오류 메시지에서 알기 힘든, 잘못된 것을보기 위해 Botan 헤더를 읽어야합니다. gcc 용으로 작성된 코드는 특히 템플릿을 사용할 때 MSVC를 사용하여 빌드해야하는 경우가 종종 있습니다. –
포함하고있는 Windows 헤더가 최소 및 최대 매크로를 정의하지 않는지 확인하십시오. 전처리기를 통해 코드를 실행하면 std :: min이'std :: (x)와 같은 것으로 다시 작성되는 것을 볼 수 있습니다. <(y)? (x) : (y))'로 표시되는 오류 메시지와 일치합니다. –