7

プロジェクトがlibとしてコンパイルされているかどうかをコンパイル時に確認するにはどうすればよいですか?(静的ライブラリ)

ある種の静的アサートまたはチェックできる他のフラグはありますか?

プリプロセッサ変数は、会社全体の他のプロジェクトで使用されるユーティリティであるため、自分で追加することはできません。ですから、デフォルトで送信されているプリプロセッサフ​​ラグなどがあるのではないかと思います。

VisualStudio2010を使用しています

4

3 に答える 3

9

事前定義されたマクロリストにはそのようなものはありません-http://msdn.microsoft.com/en-us/library/b0084kay%28v=vs.100%29.aspx

_LIBただし、「静的ライブラリ」プロジェクトの場合、デフォルトでMSVCはプリプロセッサ定義リストに追加します。( DLL用に
も追加されます)_USRDLL

編集: Visual Studio 2017では、DLLの定義は次のとおりです_WINDLL(IDEによって適用される「Windowsダイナミックリンクライブラリ」プロパティシートから)。定義は使用_LIBできなくなりました。

別の解決策は、次のプリプロセッサ定義を使用して、プロジェクトにプロパティシート(バージョン管理リポジトリにチェックイン)を追加することです_$(OutputType);%(PreprocessorDefinitions)

$(OutputType)DLLの場合は「library」、静的ライブラリの場合は「staticlibrary」として解決され、それぞれ(またはアプリケーションの)定義に_libraryなります。_staticlibrary_exe

%(PreprocessorDefinitions)以前のプロパティシートからの定義をスタックします。プロジェクトのプロパティにも含まれていることを確認してください。

プロパティシートを追加するには、 [表示]、 [表示]の順に移動します。その他のウィンドウ| VisualStudioのプロパティマネージャー

于 2012-12-27T12:56:20.613 に答える
0

Visual Studioを使用している場合、独自のプリプロセッサ定義を追加することの何が問題になっているのか正確にはわかりません。その背後にある理由は、とにかくプロジェクトファイルを提供する必要があるため、オプションがプロジェクトファイルとともに適切に配布されるためです。

または、「ファイルがライブラリとしてコンパイルされているかどうかを確認する方法」を意味する場合もあります。方法はありません(コンパイラ定義以外)。

于 2012-12-27T10:42:22.253 に答える
-1

特定のアセンブリが構築するものは、vcxprojファイルで明示的に設定されているため、コンパイル時より前に認識され、設定されます。トリッキーかもしれないのは、構成マネージャーに表示されるソリューションファイルの設定で、ソリューション構成とプラットフォームが、ソリューションビルドと矛盾するいくつかの不安定なプロジェクト構成とプラットフォームに落ち着いた可能性があることです。

vcxproj xmlでは、ビルド出力タイプが<ConfigurationType>要素の値として表示されます。

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
    <ConfigurationType>StaticLibrary</ConfigurationType>
    <UseDebugLibraries>false</UseDebugLibraries>
    <WholeProgramOptimization>true</WholeProgramOptimization>
    <CharacterSet>MultiByte</CharacterSet>
  </PropertyGroup>

同様に、プロジェクトのプロパティページではConfiguration Properties -> General -> Configuration Type、アセンブリのビルドを指定します。それが理にかなっている場合は、ターゲット拡張機能から逸脱することもできます。たとえば、BoostPythonのものをビルドするときに、dllをpydに変更します。

構成タイプ設定を強調表示するプロジェクトプロパティ

私が話しているような奇妙な混乱を強調するために、誤ってまたは欠陥のあるマージなどが発生した可能性があります。ソリューション構成の下で、各プロジェクトの項目別ビルド設定を確認できます。ソリューションプラットフォームがReleaseOfflineであるが、ソリューション内のさまざまなプロジェクトがRelease、DebugStaticなどにダイヤルインされている例を以下に示します。スクリーンショットではプロジェクトの多くがオフになっていますが、依存関係の取り違えが原因で問題が発生していることが想像できます。状態混合ビルドタイプ。一部の取り違えは意図的なものである可能性があるため、Visual Studioはこれらの構成でこの種の柔軟性を提供するため、何をしているのか、何を探しているのかを確認してください。表示される設定は、選択した構成/プラットフォームのペアに固有であることも忘れないでください。それらのいずれかを変更すると、

構成マネージャーでのプロジェクト構成の取り違えの例

于 2016-06-03T02:38:36.277 に答える