web-dev-qa-db-ja.com

C ++でVisual Studioプロジェクトにmy DLLを追加する

ダイナミックリンクライブラリの作成を伴うプロジェクトに取り組んでいるので、Visual Studioのコンソールアプリでテストしたいと思います。

DLLもVisual Studioで作成されています。多くはなく、いくつかの機能しかありません。ライブラリヘッダーをincludePropertiesのディレクトリパネル、または他の操作

多くの人が、対応する.libファイルをLibraryまたはReferenceディレクトリに追加することになっていると言いますが、VSが.libファイルをDLLと一緒に生成するかどうかはわかりません。 VS 2015を使用しています。

11
Reaper9806

現時点では、VSの前にVSはありませんが、設定する一般的な手順は次のとおりです。

Properties->Linker->Input: your.lib
Properties->Linker->Additional Library Directories: ../your/bin
Properties->General->Compiler->Additional Include Directories: ../your/include

アプリをビルドするには、DLLのAPIヘッダーがコンパイル時のインクルードに含まれている必要があります。リンク時のビンにはLIBファイルがあります。アプリのEXEを作成したら、実行時にEXEと同じフォルダーにあるのはDLLだけです。

DllプロジェクトとアプリプロジェクトをVSの一般的なソリューションに追加し、アプリからプロジェクトの依存関係をdllに追加(右クリック)することもできます。これにより、dllをビルドすることを前提として、ビルドの正しい順序が保証されます。

11
V-R

私がしたこともできます。

  1. Solutionディレクトリ内にLibsディレクトリを作成できます。
  2. その後、Libsディレクトリ内またはLibs内のサブディレクトリ内に.DLLファイルを配置できます。

    • 私の場合、そこに_SFML-2.3.2_ディレクトリ全体を追加しました。これには、ソースコード、.libファイル、および.dllファイルが含まれていました。
    • プロジェクトプロパティでできることをリンクしましたが、Visual Studioのマクロを使用して、ソリューションディレクトリへのパス名を入力しました。念のために、これをバージョン管理に入れて、複数のマシンで作業したいと思いました。
  3. 次に、プロジェクトのプロパティページを開きました。

  4. プロパティページ内で、ビルドイベント->ビルド後イベント->コマンドラインに移動しました
  5. コマンドライン内で、必要なファイルを必要な実行可能ファイルと同じディレクトリにコピーするコピーコマンドを追加できます。
    • 私の場合、次を使用しました:copy "$(SolutionDir)Libs\SFML-2.3.2\bin\*" "$(TargetDir)"
    • 必要な個々のファイルだけをコピーする複数のコマンドを書くこともできましたが、実際にはインストールせずにSFMLを機能させるために3時間を費やしていました。