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ヘッダーがminとmaxのマクロを定義していないことを確認します - もしあなたがプリプロセッサを通してコードを実行すると、std :: minが 'std ::((x) <(y)?(x):(y)) 'これはあなたが見ているエラーメッセージと一致します。 –