NonSoft

VCからもVBからも呼び出せるDLLのサンプル(VC6)


 サンプル(ソース/コード)
<このサンプルの概要>
VCからもVBからも呼び出せるDLLのサンプルソースです。
このサンプルのキーワードはDEF、__declspec(dllexport)、__stdcallです。

VCのDLLをVB6やVB.NETから呼び出すサンプルはこちらです。
VB6とVB.NETのAPI宣言(Declare)の違いを比較したサンプル

<DLLの作成手順>
1.VCで新規のプロジェクト”Win32 Dynamic-Link Library”を作成します。
  プロジェクト名は仮に mydll とします。

2.mydll.cppファイルに以下の記述をします。足し算と引き算をする関数です。
    __declspec(dllexport) long __stdcall MyPlus(int v1, int v2){
        return v1 + v2;
    }
    __declspec(dllexport) long __stdcall MyMinus(int v1, int v2){
        return v1 - v2;
    }

3.拡張子がmydll.defのファイルを作成し、以下の記述をします。
    LIBRARY    "mydll"
    EXPORTS
    MyPlus;
    MyMinus;

4.ビルドしてDLLの完成です。

<テスト用VCの作成手順>
1.VCで新規のプロジェクト”MFC AppWizard(exe)”を作成します。
  ダイアログベースのプロジェクトで十分です。
  プロジェクト名は仮に test とします。

2.DLLのビルドで出来た mydll.lib と mydll.dll をこのプロジェクトのフォルダに
  コピーします。

3.プロジェクトの設定のリンクのライブラリモジュールに mydll.lib を追加します。

4.textDlg.cppにファイルに以下の記述をします。
    __declspec(dllimport) long __stdcall MyPlus(int v1, int v2);
    __declspec(dllimport) long __stdcall MyMinus(int v1, int v2);

5.CTestDlg::OnOK()に以下の記述をします。
    int a = MyPlus(10, 1);
    int b = MyMinus(10, 1);

6.ビルドしてEXEの完成です。

<テスト用VBの作成手順>
1.VBで新規のプロジェクトを標準EXEを作成します。

2.DLLのビルドで出来た mydll.dll をこのプロジェクトのフォルダにコピーします。

3.Form1.frmに以下の記述をします。
    Private Declare Function MyPlus Lib "mydll" (ByVal v1 As Long, ByVal v2 As Long) As Long
    Private Declare Function MyMinus Lib "mydll" (ByVal v1 As Long, ByVal v2 As Long) As Long

    Private Sub Command1_Click()
        MsgBox MyPlus(10, 1)
        MsgBox MyMinus(10, 1)
    End Sub

4.ビルドしてEXEの完成です。