2010-12-27 6 views
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では起こりませんか?

+0

エラーメッセージからわかりにくいですが、Botanヘッダーを読んで何が間違っているかを確認する必要があります。 gccのために書かれたコードは、特にテンプレートが使用されている場合、MSVCでビルドするための修正が必要なことがよくあります。 –

+1

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

答えて

2

私は、Jack Lloydのコメントの助けを借りて問題を突き止めることができました。 1つのパスまたは別の#定義された "min"に含まれているもの。私はそれを定義しておらず、ライブラリは完全にコンパイルしリンクしています。ありがとうジャック!

関連する問題