#pragma commentでリンク指定しているのにリンクエラーになる問題

よく、標準ライブラリ関数以外の機能を使用した場合、

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

のように、プログラム内でリンクするライブラリを指定すればよいと言われますが、指定してもリンクエラーになる場合があります。
VC2005op2


と言うのは、#pragma comment(lib,ライブラリ名)でリンク指定するのと、直接リンクするライブラリをプロパティから設定するのは実は違いがあるのです。

VC2005op3
構成プロパティのリンカ、入力の追加依存ファイルにライブラリを追加すれば、出なくなりますが、共通ランタイムを使用しない設定(例えば、既定のライブラリの無視等)を設定していると、プログラム内でリンクライブラリを指定しても無効になってしまうのです。

VC2005op1
ちなみに、上記のリンク結果では、@__security_check_cookie@4 が未解決と言うエラーが出ていますが、これは、構成プロパティのC/C++にある、コード生成のバッファセキュリティチェックを無効にすれば出なくなります。(こちらは、以前にも記事にしたと思います)

両方とも、小さい実行ファイルを作るために、WinMainCRTStartup を自分で生成してリンクした場合によく起こる現象です(後者は Visual Studio 6などの古いバージョンでは起こりません)

関連記事:
Visual Studio Tips

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です