8章:Windows10+Visual Studio 2015環境でDLLを作成

    作成2016.10.03

  1. DLLとは?
    (1)DLLとは、動的なリンクによって利用されるライブラリのことである。 Windowsでは、DLLファイル の拡張子として「.dll」が付く。 DLLでは、様々なアプリケーションプログラムで使用される汎用的な機能 がモジュール化されており、実行ファイルがリンクを読み込むことによって共通して利用できるようになっている。
    (2)最初の作成環境はWindows98+C++(V6)でした。その後Windows7+Visual Studio Express 2012に変化し、 現在はWindows10+Visual Studio 2015となりました。
    (3)DLLの作成方法は、手順が複雑で使用環境が変化するたびに作成方法がわからなくなりました。
    (4)試行錯誤でWindows10+Visual Studio 2015環境でDLLを作成してみました。


  2. 開発環境
    個人的理由で以下の環境となります。
    (1)Windows 10 Home
    (2)パソコン:Inspiron ONE2320
    (3)プロセッサ:Pentium(R) CPU G630 @2.70GHz
    (4)実装メモリ:4GB
    (5)Microsoft Visual Studio 2015(ファイルバージョン14..0.25420.1 更新2016/06/20)


  3. DLLの作成方法
    (1) 「 Visual Studio 2015 」をダブルクリックで起動します。



    (2)メニューの「ファイル」_「新規作成」_「プロジェクト」を選択します。
    (3)テンプレートは、「Visual C++ 」_「Win32」_「 Win32コンソールアプリケーション」を選択します。
    (4)名前に「DLL_TEST」と入力します。(ソリューション名は自動的に同じとなります。)



    (5)OKボタンを押します。
    (6)次へのボタンを押します。
    (7)ラジオボタンでDLLを選択します。



    (8)完了ボタンを押します。



    (9)デホルトでDLL_TEST.defファイルが組み込まれていません。(C++V6では、defファイルが自動生成され、プロジェクトの関連付けも完了していました。)
    (10)したがって、手動でdefファイルを生成して、プロジェクトの関連付けを行う必要があります。
    (11)メニューの「プロジェクト」_「新しい項目の追加」を選択します。
    (12) 「新しい項目の追加」ダイアロフで「コード」_「モジョール定義ファイル」を選択します。
    (13)名前を「DLL_TEST」とします。



    (14)追加ボタンを押します。



    (15)「DLL_TEST.def」ファイルが追加されました。
    (16)「DLL_TEST.def」とプロジェクトの関連付けは自動化されました。
    (17)メニューの「プロジェクト」_「DLL_TESTのプロパティ」を選択します。
    (18)「構成プロパティ」_「リンカ」_「入力」を選択します。



    (19)「モジュール定義ファイル」が「DLL_TEST.def」となっています。
    (20)標準文字セットが日本語対応でないため、設定を変更します。
    (21)「構成プロパティ」_「全般」_「文字セット」で「マルチバイト文字セットを使用する」を選択します。



    (22)適用ボタンを押し、OKボタンを押します。
    (23)「DLL_TEST.cpp」をダブルクリックします。
    (24)以下のコードに書き換えます。
    // DLL_TEST.cpp : DLL アプリケーション用にエクスポートされる関数を定義します。
    //
    #include "stdafx.h"
    #include  
     
     double __stdcall ADD(double a,double b)
     {
    	return a+b;
     }
    



    (25)「DLL_TEST.def」をダブルクリックします。
    (26)以下のコードを書込みます。
    EXPORTS
    ADD @16

    *コード説明
    *double __stdcall ADD(double a,double b)は8バイト、2個の変数を受取るためADD @16と記述します。
    *__stdcallは外部参照のサブルーチンを意味します。



    (27)ソリューション構成を「Release」、ソリューションプラットフォームを「x86」とします。
    (28)「ビルド」_「ソリューションのビルド」を選択します。



    (29)DLL_TEST\Releaseフォルダー内にDLL_TEST.dllとDLL_TEST.libが完成しました。
    (30)かつて、 VBAでは、 DLL_TEST.dllのみで呼び出しが可能でしたが、Windows10では動作しなくなりました。
    (31)Visual Studio 2015でDLLの呼び出しには、最低限DLL_TEST.dllとDLL_TEST.libが必要となります。
    (32)場合によっては、関数を定義したヘッダーファイルが必要ですが、この例では、最低限の DLL_TEST.dllとDLL_TEST.libとなります。
     *以上でVBAから呼び出すDLLファイル作成作業が完了します。


  4. DLLの実行方法
    (1) 「 Visual Studio 2015 」をダブルクリックで起動します。


    (2)メニューの「ファイル」_「新規作成」_「プロジェクト」を選択します。
    (3)テンプレートは、「Visual C++ 」_「Win32」_「 Win32コンソールアプリケーション」を選択します。
      (4)名前に「DLL_EXE」と入力します。(ソリューション名は自動的に同じとなります。)



    (5)OKボタンを押します。
    (6)次へのボタンを押します。
    (7)ラジオボタンでコンソールアプリケーションを選択します。



    (8)完了ボタンを押します。



    (9)メニューの「プロジェクト」_「DLL_EXE」のプロパティ」を選択します。
    (10)「構成プロパティ」_「リンカ」_「入力」を選択します。
    (11)追加の依存ファイルの先頭に「DLL_TEST.lib;」を追加します。



    (12)標準文字セットが日本語対応でないため、設定を変更します。
    (13)「構成プロパティ」_「全般」_「文字セット」で「マルチバイト文字セットを使用する」を選択します。



    (14)適用ボタンを押し、OKボタンを押します。
    (15)「DLL_EXE.cpp」をダブルクリックします。
    (16)以下のコードに書き換えます。

    // DLL_EXE.cpp : コンソール アプリケーションのエントリ ポイントを定義します。
    //
    #include "stdafx.h"
    #include 
    #include 
    
    double __stdcall ADD(double a, double b);
    int main()
    {
    	double a = 1.5; double b = 3.2;
    	printf("%f+%f=%f\n",a,b,ADD(a,b));
    	int data;
    	scanf_s("%d", &data);
        return 0;
    }
    



    (17) DLL_EXEプロジェクトの特定のフォルダーにDLL_TEST.dllとDLL_TEST.libをペーストする必要があります。
    (18) DLL_EXEプロジェクトのフォルダーはビルドすると生成されますが、 DLL_TEST.dllとDLL_TEST.libがない ためエラーとなります。
    (19) ソリューション構成を「Release」、ソリューションプラットフォームを「x86」とします。
    (20)「ビルド」_「ソリューションのビルド」を選択します。



    (20)「\DLL_EXE\Release」フォルダーに「 DLL_TEST.dll 」をペーストします。
    (21) 「\DLL_EXE\DLL_EXE」フォルダーに「 DLL_TEST.lib 」をペーストします。
    (22)「プロジェクト」_「既存の項目の追加」を選択します。
    (23) 「 DLL_TEST.lib 」を選択します。



    (24)「追加」ボタンをおします。
    (25)「ビルド」_「ソリューションのビルド」を選択します。



    (26)「デバッグ」_「デバッグの開始」を選択します。



    (27)数字を入力して、エンターキーを押すと終了します。
    (28)「\DLL_EXE\Release\DLL_EXE.exe」をダブルクリックすると動作します。
    (29)「DLL_EXE.exe」と「DLL_TEST.dll」が同一フォルダー内にあると動作します。


  5. 完成ファイルのダウンロード
     完成ファイルは以下からダウンロードできます。
     完成ファイルは解凍してから使用してください。
     
    [完成ファイル]をダウンロードする。
     解凍すると「DLL_TEST」フォルダーと「DLL_EXE」フォルダーがあります。


  6. Windows10+Visual Studio 2015環境でDLLを作成まとめ

    (1) DLLは大変便利なのですが、作成手順、使用手順が複雑です。
    (2)作成手順、使用手順は、いくつかの方式があるようです。
    (3)とりあえず、もっとも単純な方法で作成してみました。
    (4)この方式はWindows98 + C++(V6)時代と類似の方式です。



9章:パソコンのOpenGLバージョンの確認方法に行く。

トップページに戻る。