VC++を使ってるとして説明します。
まずDLLのプロジェクトを新規作成しましょう。
プロジェクト名がDLLのファイル名になると思います。
新規作成>Win32 Dynamic-Linc Library
を選択します。
OKボタンを押し、次は 空のDLLプロジェクト を選択し、終了ボタンを押します。
これでプロジェクトは出来ました。
次はファイルを追加しましょう。
新規作成>C/C++ ソースファイル
を選択します。
プロジェクトへ追加にチェックが入ってることを確認して、ファイル名を適当に決めてOKボタンを押します。
ここではプロジェクト名を dlltest ファイル名を dlltest.cpp とします。
もう一度ファイルを追加します。次はファイル名を dlltest.def とします。
これでファイルの準備は終りました。
次は中身です。
以下のように書きます
/////////////////////////////////////////////////////////////////////////////
// dlltest.cpp
#include <windows.h>
BOOL WINAPI DllMain( HINSTANCE hDLL, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}
LONG __stdcall SelectLarge(LONG A,LONG B)
{
return (A > B) ? A : B;
}
/////////////////////////////////////////////////////////////////////////////
つぎはdefファイルです
/////////////////////////////////////////////////////////////////////////////
// dlltest.def
LIBRARY dlltest
EXPORTS
SelectLarge
/////////////////////////////////////////////////////////////////////////////
これでDLL作成の準備は整いました。
Win32 Release
を選択してビルドして下さい。
Releaseフォルダに dlltest.dll が出来ています。
また、dlltest.lib と言うファイルも出来ています。
これで完成です。簡単でした。
次は作成したDLLの使い方です。
まずはプログラミング時に lib ファイルがある場合です。
自分で作成したDLLなら libファイルは有るはずです。
まず、
新規作成>Win32 Console Application
を選択し、プロジェクトを作ります。
もちろん空のプロジェクトを選択します。
ここでは dllread とします。
ここで、プロジェクトが有るフォルダにDLLとlibファイルをコピーしておきます。
これが絶対必要です。
まずはファイル追加で適当なソースファイルを作ります
ここでは dllread.cpp とします。
中身を書きましょう。
/////////////////////////////////////////////////////////////////////////////
// dllread.cpp
#include <windows.h>
#include <iostream.h>
LONG __stdcall SelectLarge(LONG A,LONG B);
void main(void)
{
int a = SelectLarge(53,72);
cout << a;
cin >> a;
}
/////////////////////////////////////////////////////////////////////////////
これでOKです。
Win32 Release
を選択してビルド してはいけません。
Win32 Release を選択後、すぐに
プロジェクト>設定>リンク
の所に、
オブジェクト/ライブラリ モジュール
と言う覧があります。そこに
kernel32.lib user32.lib gdi32.lib 等々
と有りますが、先頭に
dlltest.lib
を付け足してください。
これでビルドすると実行ファイルが出来上がります。
F5キーを押すと実行出来ます。
また、配布するときは dlltest.dll と dllread.exe の両方が必要です。
DLLファイルは実行ファイルと同じフォルダかシステムフォルダに入れます。
自分のソフト専用なら、システムフォルダはやめましょう。
これで一応はDLLが使えたわけです。
でも、他人が作ったDLLで、libファイルが無い場合はどうしましょうか?
それはまた次回で〜
さよ〜なら〜
いきなり続きます。
まずはプロジェクトを新規作成してください。
ここでは dllreadnew にします。
ソースファイルを追加です。これは dllreadnaw.cpp にします。
中身は以下のようになります。
/////////////////////////////////////////////////////////////////////////////
// dllreadnaw.cpp
#include <windows.h>
#include <iostream.h>
HINSTANCE hDll;
LONG ( __stdcall *OKiHo)(LONG,LONG);
void main(void)
{
hDll = ::LoadLibraryEx("dlltest.dll",NULL,0);
if( ! hDll ){
cout << "open err";
return;
}
OKiHo = (LONG(__stdcall*)(LONG,LONG)) ::GetProcAddress( hDll,"SelectLarge");
if( ! OKiHo ){
::FreeLibrary( hDll );
cout << "read err";
return;
}
int b = OKiHo(526,325);
::FreeLibrary( hDll );
cout << b;
cin >> b;
}
/////////////////////////////////////////////////////////////////////////////
今回はプロジェクトのフォルダにDLLだけコピーしてください。
そして、libファイルの設定もせずに実行します。
これで、DLLの関数プロトタイプさえ決めてしまえば、後は他の人にDLLを作ってもらっても
大丈夫なわけです。
これで里梨ちゃんの、DLL作成あ〜んど使用方法はおしまいっ!