

Visual Studio 2017を使用してます。

Visual Studio 2017のソリューションエクスプローラで以下のように表示される  
librariesに表示されているDLLのインポートライブラリのフルパスはどこで、  
指定すればいいのでしょうか？  
[![画像の説明をここに入力](https://i.stack.imgur.com/Go6y9.png)](https://i.stack.imgur.com/Go6y9.png)

ライブラリ毎にフォルダが異なった場合もありますから、統一して指定できないと  
思います。  
ライブラリ毎に指定するのではないかと思っていますが、  
それを指定する箇所が分かりません。

ご教授ください。

ライブラリ毎のパスの指定の絵  
[![画像の説明をここに入力](https://i.stack.imgur.com/bX6Of.png)](https://i.stack.imgur.com/bX6Of.png)


CC BY-SA 4.0
2020-05-01T08:32:29.577
66177
2020-05-02T09:03:29.597
2020-05-01T22:05:01.823
39774
39774
question
visual-studio
Visual studio 2017 DLLのリンクのパスの指定


対象の問題/質問以前に、前提としている環境などへの誤解がありそうです。

**以下は訂正版：**

  * ソリューションエクスプローラーのペインに`.lib`ファイルが列挙されていますが、これは依存関係のある(変更されたらビルド処理のトリガとする)ファイルをリストしているのであって、`.cpp`等と類似の扱いになり、拡張子`.lib`が考慮されてリンカに渡されますが、プロジェクトのプロパティダイアログでリンク時のライブラリを指定する際の情報とは違いがあるようです。

  * 2つ目のスクリーンショットの右下`ACAP_STATD.lib ファイルのプロパティ`で`相対パス`にユーザーマクロを組み合わせても、完全パスにも有効なパス情報が表示されているように見えますが、マウスポインタを完全パスに当ててフルパスを読み取ると、無効な値になっているのがわかるでしょう。また2つ目のスクリーンショットでも、該当ファイルのアイコンに黄色い三角の！マークが付いていて、無効な指定であることを示しています。

  * エラーが発生しているのは、リンク処理時に該当のファイルが見つからないということであって、エラーメッセージを見るとこちらではユーザーマクロは展開されていない形になっています。おそらくソリューションエクスプローラーペインに指定する方法ではユーザーマクロは展開されないものと思われます。

  * ソリューションエクスプローラーペインにライブラリファイルを指定する場合は、ユーザーマクロを使わない実際のパス情報そのものを指定する必要があるでしょう。  
ユーザーマクロを有効にしたいのならば、以下の方法で別々に指定を追加する必要があるでしょう。

* * *

以下記事のように2ステップの作業が必要です。  
[ライブラリの使用方法、VisualStudioの設定方法](https://imagingsolution.net/program/how-to-use-
library/)

> ライブラリファイル(*.lib)の参照設定方法

  1. 「リンカ」の「全般」で **追加のライブラリディレクトリ** を追加する  
->ここでマクロと組み合わせてディレクトリ指定することも可能です
  2. 「リンカ」の「入力」で **追加の依存ファイル** を追加する

**1.** でディレクトリは複数指定可能であり、そこでディレクトリが指定されていれば **2.**
ではパス指定は不要でファイル名だけ指定すれば良いわけです。

**1.** の作業をせずに **2.** だけで指定する場合は、そこにフルパスを指定します。

あるいはフルパスを指定するのであれば、上記のように手作業を繰り返すのではなく、ソースコードに記述する方法もあります。  
(上記1.でディレクトリを指定しておけばフルパスではなくファイル名指定だけでも出来ます)

> 他にもプログラム中で*.libファイルを直接していする事もできます。  
>  例） **#pragma comment(lib,”C:\Program Files\OpenCV\lib\cv.lib”)**

いずれにしろ、最大では `Debug`, `Release`と `Win32`, `x64` の各モードを掛け合わせて4種類の設定を行う必要があります。

ソースコードに記述する場合は、以下のように`#ifdef`のマクロで切り替えられるよう考慮する必要があります。  
[ライブラリの設定 |
【C++】VisualStudioの使い方入門](http://visualstudiostudy.blog.fc2.com/blog-
entry-5.html)

> ライブラリファイルの指定  
>  ソースコードに直接記述する方法
>
> 使用するヘッダなどにpragma
> commentを用いて使用するlibファイルを記述します。上記の例はOpenCV2.3でですが、これはlibファイルがデバッグ用とリリース用の2通りあるためプリプロセッサで場合分けを行っています。


CC BY-SA 4.0
2020-05-02T00:07:07.780
66191
2020-05-02T09:03:29.597
2020-05-02T09:03:29.597
26370
26370
66177
answer