2016-09-21 21 views
0
  • VS 2015でコンパイルされた静的ライブラリをVS 2012で使用できますか? VS 2012のCコンパイラは非常に古いです。私が直面する最も一般的な問題は変数宣言の場所です。変数はVS 2012のスコープの冒頭で宣言する必要があります。Visual Studio 2015 vs 2012

  • このような互換性がある場合、ヘッダーファイルのコンパイルエラーを修正し、関数をライブラリから呼び出す必要があります。そうですか?

答えて

1

一般に、静的ライブラリはVisual Studioのさまざまなバージョン間で互換性がありません。

https://en.wikipedia.org/wiki/Visual_C%2B%2B#Compatibility

のVisual C++コンパイラABIは、歴史的に主要な コンパイラのリリース間で変更されました。特にSTLコンテナの場合は、 コンテナのサイズがコンパイラのリリースによって大きく異なります。 異なるコンパイラバージョン を使用してコンパイルされたクライアントコードを有効にするには、モジュール 境界でC++インターフェイスを使用することを推奨します。 C++の代わりに、 CまたはCOMインターフェイスを使用することをお勧めします。これらのインターフェイスは、コンパイラリリース間に安定したABI を持つように設計されています。

私は特にVS2015 - > VS2012をやってみたことがありませんが、他の方法は間違いなくいくつかの問題があります(VS2012/VS2013 - > VS2015)。しかし、VS2015には、いくつかの特定の問題を緩和しようとする文書化されていないライブラリ(legacy_stdio_definitions.libとlegacy_stdio_wide_specifiers.lib)がありますが、互換性のためのキャッチオールではありません。

ベストプラクティスは、スタティックライブラリを使用するVisual Studioのバージョンでコンパイルすることです。

関連する問題