自作スタティックライブラリの追加について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Mokutsuno
記事: 26
登録日時: 8年前

自作スタティックライブラリの追加について

#1

投稿記事 by Mokutsuno » 8年前

お世話になっています。
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のプロジェクトに追加しても問題ないと思ったのですが...なにか不備があるのだと思います
必要な情報があれば追記いたします。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 自作スタティックライブラリの追加について

#2

投稿記事 by みけCAT » 8年前

Visual Studioは詳しくないので、予想で答えます。
Mokutsuno さんが書きました: そこで質問です。BプロジェクトにAライブラリを追加するときには、Aが依存関係(正しい使い方かわかりません)にあるlibPngライブラリのヘッダファイルもBプロジェクトの「追加の依存ファイル」に追加しなければならないのでしょうか?
いいえだと思います。
Mokutsuno さんが書きました: 追加、とは(「追加の依存ファイル」にA.libのあるフォルダのパスを、
「追加のインクルードディレクリ」、及び「追加のライブラリディレクトリ」にAのヘッダファイル、.libのあるフォルダのパスを指定し、A.hをincludeした状態です。
と書かれているので、「追加の依存ファイル」はヘッダファイルではなくライブラリがあるフォルダのパスを入れる場所であると予想できます。
Aライブラリを他のプログラム(例えばBプロジェクト)から使うためのヘッダが今回のようにlibPng(原文ママ。libpngではないのか?)のヘッダに依存しているのであれば、
libPng(原文ママ)のヘッダがあるディレクトリも「追加のインクルードディレクリ」(原文ママ。ディレクリではなくディレクトリではないのか?)に追加するべきであるように思えます。
逆に、Aライブラリを他のプログラムから使うためのヘッダがlibPng(原文ママ)など他のライブラリのヘッダに依存していないのであれば、
他のライブラリのヘッダやそれがあるディレクトリをプロジェクトの設定に追加する必要はないだろうと思います。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Mokutsuno
記事: 26
登録日時: 8年前

Re: 自作スタティックライブラリの追加について

#3

投稿記事 by Mokutsuno » 8年前

返信ありがとうございます。
libpng、ディレクトリ、でした。失礼いたしました。
みけCAT さんが書きました:libPng(原文ママ)のヘッダがあるディレクトリも「追加のインクルードディレクリ」(原文ママ。ディレクリではなくディレクトリではないのか?)に追加するべきであるように思えます。
たしかに、libpngに依存しているのでヘッダファイルを追加するべきでした。
「追加のインクルードディレクトリ」にlibpngのヘッダファイルを追加したところ、ビルドが通りました。
大変ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る