DLLの作成

ダウンロード

■プロジェクトについて

A:「Win32コンソールアプリケーション」「DLL」(追加オプションなし)

B:「Win32コンソールアプリケーション」「DLL」(シンボルをエクスポート)
ファイルはAと同じだが、CPP,HにEXPORTS文あり。

C:「Win32コンソールアプリケーション」「DLL」(空のプロジェクト)
ソースファイル等一切なし。

なお、選択は「Win32プロジェクト」からもできるが、結果は「Win32コンソールアプリケーション」と変わらない。

要は空のプロジェクトにするとファイルは何も作成されず、ここにチェックを入れないでおくとcpp,ファイル等が作成される。hファイルは作成されない。シンボルをエクスポートすると作成されたファイルに何やら書かれるということ。
空のプロジェクトとはせずに、シンボルをエクスポートしないのがやりやすそう。

■DLLの作成(この例では「TDll」がプロジェクト名)

[ファイル]-[新規作成]-[プロジェクト]で、「新しいプロジェクト」画面を起動。
その画面の[テンプレート]で、[Win32 プロジェクト]を選択。
同画面の[プロジェクト名]で、作成プログラムに名付ける任意の名前を入力。
[OK]ボタンを押す。
2

「Win32 アプリケーション ウィザード」画面が起動。
[次へ]をクリックし、その画面の[アプリケーションの種類]で、DLLを選択し、[完了]ボタンをクリック。
3

4
cppファイルにコードを記述。(そのファイルに既に書かれているコードはそのまま)

その下に必要な関数を記述。

ここでは、足し算関数。

int __stdcall TestFunc(int x, int y)
{
return x + y;
}

DEFファイルに、エクスポート(外部公開)する関数の名前を提示。
DEFファイルの組み込みは、[プロジェクト]-[新しい項目の追加]で、[モジュール定義ファイル(def)]を選択。、ファイル名を入力し、[追加]ボタンをクリック。(ファイル名は、何でも良く、プロジェクト名と同じ名でも可能)
5

作成されたDEFファイルの一番下に EXPORTS と記述。
EXPORTS の下方に、エクスポート(外部公開)する各種関数の名前を、行単位で記述。
例えば、
int TestFunc(int x, int y)の関数をエクスポートする場合は、

LIBRARY
EXPORTS
TestFunc

[ビルド]-[ソリューションのビルド]で、Debugフォルダ内にDLLが作成される。

■C#から利用
DllImport(“TDll.dll”, EntryPoint = “TestFunc”)]
public static extern int TestFunc(int x, int y);

private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = TestFunc(9, 6).ToString();
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください