1. ホーム
  2. c++

[解決済み] C++: pragma comment(lib, "XXX") は、実際に "XXX" に対して何をするのですか?

2022-02-07 12:19:28

質問

私のバックグラウンドはC#ですが、レガシー(MS)C++をいくつかメンテナンスする必要があります。そのコードベースの中で、私はつまずきました。

#pragma comment(lib, "OtherLib700.lib")

ここで、700は何らかのバージョン管理です。また、libは同名のDLLです。

私は最初、プログラムがDLLに依存しているのではと思いましたが、システムからそれを取り除いた後、プログラムはまだ動作します。しかし、そのDLLにはより新しいバージョンが存在し、OtherLib900という名前になっています...。

プログラムが lib のコードを「インクルード」して、外部 DLL に依存しないようにしたようです。(あるいは、プログラムが「自動的に」新しいDLLを使用しているのか...)

どちらが正しいのでしょうか?その「仮定」をさらに確認する方法はありますか?

解決方法は?

このプラグマがある場合、プログラムはライブラリを探します。 OtherLib700.lib . それがインポートライブラリであれば、プログラムがロードされたとき、windowsは次のものを探します。 OtherLib700.dll をパスの中に入れてください。しかし OtherLib900.dll を実行中に見つける必要があります。 dll を別のフォルダにコピーします。これは、以下のように仮定しています。 OtherLib700.lib はインポートライブラリであり、スタティックライブラリではありません。もしOtherLib700.libがスタティック・ライブラリであれば、それだけで十分なのです。