質問: VC++(VS2012)で作成したスタティックライブラリ(.lib)を、ダイナミックライブラリ(.dll)に変えたいのですが、プロジェクトの構成のプロパティで変えてコンパイルするとエラーになってしまいます。 エラーの内容からすると、どうもスタティックライブラリのときに依存関係として指定していたライブラリが読み込めなくなる空のようなのですが、このような場合、スタティックライブラリからダイナミックライブラリに変えるのはどうしたらいいのでしょう? ダイナミックライブラリ作成時に、スタティックライブラリを依存関係として指定する事は出来ないものでしょうか? ※構成の種類を、スタティックライブラリからダイナミックライブラリに変えると、構成のプロパティから、「ライブラリアン」という項目が消えてしまいます。なので、ライブラリアンで指定していたスタティックライブラリが読み込めなくなるのが原因のようです。
回答: こんにちは。 > > ダイナミックライブラリ作成時に、スタティックライブラリを依存関係として指定する事は出来ないものでしょうか? > > > できます。構成プロパティのリンカーの入力の「追加の依存ファイル」へ指定すれば良いです。 後、MasahikoHirataさんが書かれているように、dllを使う側へ公開する関数や変数、クラスに*declspec(dllexport)、*declspec(dllimport)を指定する必要があります。結構、ややこしいてす。 チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++).aspx)を見て作業されると良いと思います。 dllの場合、スタティック・ライブラリと異なり、関数や変数へのアクセス方法が特殊な方法になります。 VC++はその特殊な方法を適用するものを1つ1つ指定する必要があるのです。(手間ばかりかかるような気もしますが、公開したくないものを隠蔽できると言うメリットもあります。) クラスを公開する場合は、C++ クラスの dllimport と dllexport を使用する.aspx)も読むことをお勧めします。 dllは意外に難しいです。C言語I/Fなら情報も多いのでそれほど苦労はしないと思います。