Qt 使用MSVC在Windows上静态链接到Botan时出现问题

Qt 使用MSVC在Windows上静态链接到Botan时出现问题,qt,visual-c++,botan,Qt,Visual C++,Botan,我试图在Windows上使用MSVC将我正在构建的Qt库静态链接到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

我试图在Windows上使用MSVC将我正在构建的Qt库静态链接到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 : '::'
。\..\3rdparty\temp\botan msvc\build\include\botan/secmem.h(129):错误C2589:'(':右侧的非法令牌:'
..\..\3rdparty\temp\botan msvc\build\include\botan/secmem.h(128):编译类模板成员函数“void botan::MemoryRegion::copy(const T[],size_T)”时
具有
[
T=Botan::字节
]
..\..\3rdparty\temp\botan msvc\build\include\botan/buf_comp.h(41):请参阅正在编译的类模板实例化“botan::MemoryRegion”的参考
具有
[
T=Botan::字节
]
..\..\3rdparty\temp\botan msvc\build\include\botan/secmem.h(129):错误C2059:语法错误:':'

MinGW不会出现这种情况。当我注释掉所有与植物学相关的代码时,也会出现这种情况。这意味着什么?我该如何解决它?为什么MinGW不会出现这种情况?

在Jack Lloyd的注释的帮助下,我能够解决这个问题。显然,通过一条路径或另一条路径包含的内容定义为“min”。我只是没有定义它,我的库编译和链接都很完美。谢谢Jack!

很难从错误消息中看出,您需要阅读Botan头文件以查看错误。为gcc编写的代码通常需要使用MSVC进行修复,尤其是在使用模板时。请确保您包含的Windows头文件没有定义min和max宏-如果您通过预处理器运行代码,您可能会看到std::min被重写为类似于
std:((x)<(y)?(x):(y))
,这将与您看到的错误消息相匹配。