はじめましてこんばんは。
C/C++でのお話です。
一般的に配布されている(?)静的ライブラリはリリースビルドとデバッグビルドで共通のものが使用されていると思っています。例えば libvulkan-1.a
や d3d12.lib
など
そのため、自分で .lib もしくは lib.a ファイルを作成するときにも共用できるタイプで作成したいと思いました。
しかし、.obj もしくは .o ファイルを作成する際に、-D_DEBUG や -DNDEBUG などのデバッグ用とリリース用で異なるプリプロセッサフラグを指定する場合があります。
そうすると .obj ファイルから .lib ファイルを作成するときにデバッグもしくはリリース用で固定されてしまいます。
そこで質問なのですが、これを回避し、デバッグビルドとリリースビルドで共通して使える .lib ファイルは作成できるのでしょうか?
自分の予想
vulkan-1.lib
と d3d12.lib
には対応するランタイム dll(vulkan-1.dll
, d3d12.dll
)が OS に入っていることや、c++ - Debug版とRelease版で同じLibファイルにする方法 - スタック・オーバーフロー を見た感じ、 .lib ファイル単体では共通して使用できず、共通して利用するには .dll または lib.so ファイルが必要なのかな。と思いました。
ただ、.dll に関して完全に無知なのでよく分かりません。教えてください。
環境
Windows 10 64bit
MSYS2 MinGW x64 - GCC 11.2.0
免責
初めての投稿ということで至らぬ点があるかと思いますが、優しく指摘していただけると嬉しいです。