- [新しいプロジェクト] > [Visual C++] > [Win32アプリケーション] でプロジェクトを作成。
- ここでは名前を MyCppDll にしたとする。
- [アプリケーションの種類] は [DLL] を選択。
- MyCppDll.cpp を下記のように編集してビルド。
#include "stdafx.h"
extern "C" __declspec(dllexport) int __stdcall MyAdd(int a, int b)
{
return a + b;
}
- 同ソリューションに [新しいプロジェクト] > [Visual C++] > [Win32コンソール アプリケーション] でプロジェクトを作成。
- ここでは名前を MyCppApp にしたとする。
- MyCppApp を [スタートアップ プロジェクトに設定]。
- [追加] > [参照] > [新しい参照の追加] で MyCppDll を追加。
- MyCppApp.cpp を下記のように編集してビルド。
- Ctrl+F5 で実行して動作を確認。(下記コードはふつうに実行すると一瞬で終了するため)
#include "stdafx.h"
extern "C" __declspec(dllexport) int __stdcall MyAdd(int a, int b);
int _tmain(int argc, _TCHAR* argv[])
{
int a = 10, b = 20;
int c = MyAdd(a, b);
printf("%d + %d = %d\n", a, b, c);
return 0;
}
C#でDLLを使う
- 同ソリューションに [新しいプロジェクト] > [Visual C#] > [コンソール アプリケーション] でプロジェクトを作成。
- ここでは名前を MyCsApp にしたとする。
- MyCsApp を [スタートアップ プロジェクトに設定]。
- Program.cs を下記のように編集してビルド。
- DLLのパス指定に注意。同ディレクトリに配置すればファイル名だけで可。
- Ctrl+F5 で実行して動作を確認。(下記コードはふつうに実行すると一瞬で終了するため)
using System;
using System.Runtime.InteropServices;
namespace MyCsApp
{
class Program
{
[DllImport(@"..\..\..\Debug\MyCppDll.dll")]
extern static int MyAdd(int a, int b);
static void Main(string[] args)
{
int a = 10, b = 20;
int c = MyAdd(a, b);
Console.WriteLine(a + " + " + b + " = " + c);
}
}
}
VC++で.NETのDLLを作る
こんどは.NETクラスライブラリのDLLを作ってみる。
- [新しいプロジェクト] > [Visual C++] > [CLR] > [クラス ライブラリ] でプロジェクトを作成。
- ここでは名前を MyClrDll にしたとする。
- MyClrDll.h と MyClrDll.cpp を下記のように編集してビルド。
#pragma once
using namespace System;
namespace MyClrDll {
public ref class MyClrClass
{
public:
static int MyAdd(int a, int b);
};
}
#include "stdafx.h"
#include "MyClrDll.h"
using namespace MyClrDll;
int MyClrClass::MyAdd(int a, int b)
{
return a + b;
}
C#で.NETのDLLを使う
- 先に作成したC#アプリ MyCsApp を次のように変更する。
- [追加] > [参照] で MyClrDll を追加。
- Program.cs を下記のように編集してビルド。
- Ctrl+F5 で実行して動作を確認。(下記コードはふつうに実行すると一瞬で終了するため)
using System;
namespace MyCsApp
{
class Program
{
static void Main(string[] args)
{
int a = 10, b = 20;
int c = MyClrDll.MyClrClass.MyAdd(a, b);
Console.WriteLine(a + " + " + b + " = " + c);
}
}
}