お世話になっています。
VisualStudio2015Community、C++の環境で
画像ファイルを読み込みを行う関数を纏めたAのスタティックライブラリを作ったのですが、
そのライブラリはlibPngというライブラリを使っています(ライブラリを使う、の適切な言葉がわかりません)
そして、自作のライブラリはビルドが通り、そのライブラリをBのプロジェクトに追加したのですが、
Aのライブラリを追加しビルドすると、libPng側のヘッダファイルがディレクトリにない旨のエラーが
出ました。(include ファイルを開けません。'pnglibconf.h':No such file or directory)
追加、とは(「追加の依存ファイル」にA.libのあるフォルダのパスを、
「追加のインクルードディレクリ」、及び「追加のライブラリディレクトリ」にAのヘッダファイル、.libのあるフォルダのパスを指定し、A.hをincludeした状態です。
そこで質問です。BプロジェクトにAライブラリを追加するときには、Aが依存関係(正しい使い方かわかりません)にあるlibPngライブラリのヘッダファイルもBプロジェクトの「追加の依存ファイル」に追加しなければならないのでしょうか?
Noである場合は、なぜこのエラーが出るのか助言をお願いします。
libPngのほうはAのライブラリでディレクトリを正しく指定してある(Aのビルドではエラーなし)ので、AのライブラリをBのプロジェクトに追加しても問題ないと思ったのですが...なにか不備があるのだと思います
必要な情報があれば追記いたします。
自作スタティックライブラリの追加について
Re: 自作スタティックライブラリの追加について
Visual Studioは詳しくないので、予想で答えます。
Aライブラリを他のプログラム(例えばBプロジェクト)から使うためのヘッダが今回のようにlibPng(原文ママ。libpngではないのか?)のヘッダに依存しているのであれば、
libPng(原文ママ)のヘッダがあるディレクトリも「追加のインクルードディレクリ」(原文ママ。ディレクリではなくディレクトリではないのか?)に追加するべきであるように思えます。
逆に、Aライブラリを他のプログラムから使うためのヘッダがlibPng(原文ママ)など他のライブラリのヘッダに依存していないのであれば、
他のライブラリのヘッダやそれがあるディレクトリをプロジェクトの設定に追加する必要はないだろうと思います。
いいえだと思います。Mokutsuno さんが書きました: そこで質問です。BプロジェクトにAライブラリを追加するときには、Aが依存関係(正しい使い方かわかりません)にあるlibPngライブラリのヘッダファイルもBプロジェクトの「追加の依存ファイル」に追加しなければならないのでしょうか?
と書かれているので、「追加の依存ファイル」はヘッダファイルではなくライブラリがあるフォルダのパスを入れる場所であると予想できます。Mokutsuno さんが書きました: 追加、とは(「追加の依存ファイル」にA.libのあるフォルダのパスを、
「追加のインクルードディレクリ」、及び「追加のライブラリディレクトリ」にAのヘッダファイル、.libのあるフォルダのパスを指定し、A.hをincludeした状態です。
Aライブラリを他のプログラム(例えばBプロジェクト)から使うためのヘッダが今回のようにlibPng(原文ママ。libpngではないのか?)のヘッダに依存しているのであれば、
libPng(原文ママ)のヘッダがあるディレクトリも「追加のインクルードディレクリ」(原文ママ。ディレクリではなくディレクトリではないのか?)に追加するべきであるように思えます。
逆に、Aライブラリを他のプログラムから使うためのヘッダがlibPng(原文ママ)など他のライブラリのヘッダに依存していないのであれば、
他のライブラリのヘッダやそれがあるディレクトリをプロジェクトの設定に追加する必要はないだろうと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: 自作スタティックライブラリの追加について
返信ありがとうございます。
libpng、ディレクトリ、でした。失礼いたしました。
「追加のインクルードディレクトリ」にlibpngのヘッダファイルを追加したところ、ビルドが通りました。
大変ありがとうございました。
libpng、ディレクトリ、でした。失礼いたしました。
たしかに、libpngに依存しているのでヘッダファイルを追加するべきでした。みけCAT さんが書きました:libPng(原文ママ)のヘッダがあるディレクトリも「追加のインクルードディレクリ」(原文ママ。ディレクリではなくディレクトリではないのか?)に追加するべきであるように思えます。
「追加のインクルードディレクトリ」にlibpngのヘッダファイルを追加したところ、ビルドが通りました。
大変ありがとうございました。