この記事は、経験豊富なHow.com.vnの編集者と調査員から成るチームによって執筆されています。調査員チームは内容の正確性と網羅性を確認しています。
How.com.vnのコンテンツ管理チームは、編集チームが編集した記事を細心の注意を払って精査し、すべての記事がHow.com.vnの高品質基準を満たしているかどうかを確認しています。
この記事は14,103回アクセスされました。
DLLファイルとは、C++で記述・制御される、動的にリンクされたライブラリファイルのことです。DLLを使うと、コードの共有、保管、保存が容易になります。この記事では、 「Visual Studio」というWindowsアプリケーションや 、そのMac版「Visual Studio for Mac」でDLLファイルを作成する方法を紹介します。インストール時には、「C++によるデスクトップ開発」にチェックが入っていることを確認しましょう。「Visual Studio」はすでにインストールされていても、そのチェックボックスにチェックを入れていない場合は、インストーラーを再度実行して、必ずチェックを入れましょう。
ステップ
- ファイルタブをクリックする ワークスペースの上(Windows)または画面上部(Mac)にあります。
- 新規作成→プロジェクトの順にクリックする 「新しいプロジェクトの作成」というダイアログボックスが表示されます。
- 「言語」、「プラットフォーム」、および「プロジェクトの種類」に関するオプションを設定する 表示されるプロジェクトテンプレートの種類を絞り込みます。
- 言語をクリックしてドロップダウンメニューを開き、C++を選択しましょう。
- 「プラットフォーム」をクリックしてドロップダウンメニューを開き、「Windows」を選択する
- 「プロジェクトの種類」をクリックしてドロップダウンメニューを開き、「ライブラリ」を選択する
- ダイナミックリンクライブラリ(DLL)をクリックする 選択すると青くハイライトされます。次へをクリックして先に進みましょう。
- 「プロジェクト名」のテキストボックスにプロジェクト名を入力する 例えば、サンプルとしてそのテキストボックスに「MathLibrary」と入力します。
- 作成をクリックする DLLプロジェクトが作成されます。
- ヘッダーファイルをDLLに追加する メニューバーの「プロジェクト」から「新しい項目の追加」を選択します。
- ダイアログボックスの左メニューからVisual C ++を選択します。
- ダイアログボックスの中央からヘッダーファイル(.h)を選択します。
- メニュー選択の下にある「名前」のテキストボックスに「MathLibrary.h」というファイル名を入力します。
- 追加をクリックして、空のヘッダーファイルを生成します。
- 空のヘッダーファイルに以下のコードを入力する
- 上記は、マイクロソフトのヘルプページで提供されているサンプルコードです。
// MathLibrary.h:数学関数の宣言を含む#pragma once#ifdef MATHLIBRARY_EXPORTS#define MATHLIBRARY_API __declspec(dllexport)#else#define MATHLIBRARY_API __declspec(dllimport)#endif// フィボナッチ漸化式で整数の初期値a,bに対して、// F(n)が{ n = 0, a// { n = 1, b// { n > 1, F(n-2) + F(n-1)// となる数列Fが記述される// この数列がF(0) = 1, F(1) = 1に初期化されると// この漸化式で1, 1, 2, 3, 5, 8, 13, 21, 34, ...// という有名なフィボナッチ数列が生成される// F(0) = a, F(1) = bを満たすように// フィボナッチ数列を初期化する// この関数は他の関数の前に呼び出す必要があるextern "C" MATHLIBRARY_API void fibonacci_init( const unsigned long long a, const unsigned long long b);// 数列の次の値を生成する// 成功した場合はtrueを返し、現在の値とインデックスを更新する// オーバーフローが発生した場合はfalseを返し、現在の値とインデックスは変更せずに残すextern "C" MATHLIBRARY_API bool fibonacci_next();// 数列の現在の値を取得するextern "C" MATHLIBRARY_API unsigned long long fibonacci_current();// 数列の現在のインデックス位置を取得するextern "C" MATHLIBRARY_API unsigned fibonacci_index();
- CPPファイルをDLLに追加する メニューバーの「プロジェクト」から「新しい項目の追加」を選択します。
- ダイアログボックスの左メニューから「Visual C ++」を選択します。
- ダイアログボックスの中央から「C++ファイル(.cpp)」を選択します。
- メニュー選択の下にある「名前」のテキストボックスに「MathLibrary.cpp」というファイル名を入力します。
- 「追加」をクリックして、空のファイルを生成します。
- 空のファイルに以下のコードを入力する
- 上記は、マイクロソフトのヘルプページで提供されているサンプルコードです。
// MathLibrary.cpp:DLLにエクスポート関数を定義する#include "stdafx.h" // Visual Studio 2019ではpch.hを使う#include <utility>#include <limits.h>#include "MathLibrary.h"// DLL内での状態変数:static unsigned long long previous_; // 以前の値(あれば)static unsigned long long current_; // 数列の現在の値static unsigned index_; // 数列の現在の位置// F(0) = a, F(1) = bを満たすように// フィボナッチ数列を初期化する// この関数は他の関数の前に呼び出す必要があるvoid fibonacci_init( const unsigned long long a, const unsigned long long b){ index_ = 0; current_ = a; previous_ = b; // 初期化された特別な場合を参照}// 数列の次の値を生成する// 成功した場合はtrue、オーバーフローが発生した場合はfalseを返すbool fibonacci_next(){ //オーバーフローが発生していないかどうかを調べる if ((ULLONG_MAX - previous_ < current_) || (UINT_MAX == index_)) { return false; } // index == 0の特殊な場合は、bの値を返すだけ if (index_ > 0) { // それ以外の場合は、数列の次の値を計算する previous_ += current_; } std::swap(current_, previous_); ++index_; return true;}// 数列の現在の値を取得するunsigned long long fibonacci_current(){ return current_;}// 数列の現在のインデックス位置を取得するunsigned fibonacci_index(){ return index_;}
- メニューバーのビルドをクリックする ワークスペースの上(Windows)または画面上部(Mac)にあります。
- ソリューションのビルドをクリックする クリックすると以下のようなテキストが表示されます。
- DLLファイルの作成に成功した場合は、それがここに表示されます。また、エラーが発生した場合は、ここにリストで表示されるので修正しましょう。[1]
1>------ Build started: Project: MathLibrary, Configuration: Debug Win32 ------1>MathLibrary.cpp1>dllmain.cpp1>Generating Code...1> Creating library C:\Users\username\Source\Repos\MathLibrary\Debug\MathLibrary.lib and object C:\Users\username\Source\Repos\MathLibrary\Debug\MathLibrary.exp1>MathLibrary.vcxproj -> C:\Users\username\Source\Repos\MathLibrary\Debug\MathLibrary.dll1>MathLibrary.vcxproj -> C:\Users\username\Source\Repos\MathLibrary\Debug\MathLibrary.pdb (Partial PDB)========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
広告
出典
このHow.com.vn記事について
この記事は役に立ちましたか?
⚠️ Disclaimer:
Content from Wiki How 日本語 language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.
- - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
- - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
- - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
- - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.