3F VC++からDLLを呼び出す方法
Last Updated:2000/11/10
■トップ ■ダウンロード ■圧縮解凍の部屋 ■掲示板 ■リンク
 ■Visual C++からDLLを呼び出す(静的リンク)
  Visual C++からAPIを扱う場合、2つの方法があります。
 まずは静的リンクについて述べます。

 静的リンクは、DLLに付属したライブラリを使ってリンクする方法です。
 簡単にAPI利用できますが、そのDLLがないと実行できないという欠点があります。
 実行方法は、DLLに付属しているライブラリを以下の画面で組み込みます。
ライブラリの設定 627×349 9KB(GIF)

  例として、UNLHA32.DLLを利用する場合、添付されているUNLHAVC.LIBを上の画面で指定します。
 そして、UNLHA32.Hをインクルードします。
#include "unlha32.h"

  これで準備は完了です。
 ■Visual C++からDLLを呼び出す(動的リンク)
  動的リンクとは、APIを使って、DLLを呼び出す方法です。この場合はDLLがなくても実行可能です。
 一般のアーカイバでは、動的リンクで実行しています。

  DLLを呼び出す時は以下のAPIを利用します。
HINSTANCE LoadLibrary(

  LPCTSTR lpLibFileName // address of filename of executable module

);

 しかし、このままでは使えませんので、APIへのアドレスを取得します。。
FARPROC GetProcAddress(

  HMODULE hModule, // handle to DLL module

  LPCSTR lpProcName // name of function

);

  これらを記述する前にwindows.hをインクルードし、typedef関数で仮引数を指定してください。
 Unlha()を使う場合は以下の引数を宣言します。
#include <windows.h>

typedef int(WINAPI *UNLHA)(const HWND, LPCSTR, LPSTR , const DWORD);

  LoadLibrary〜GetProcAddressまでのステップは以下の通りです。
HINSTANCE lib;
lib = LoadLibrary("unlha32.dll");

if (lib == NULL){

  /* ここにはエラーメッセージを入力してください */
  return -1;

}
UNLHA Unlha = (UNLHA)GetProcAddress(lib,"Unlha");

  これで準備完了です。
■ ホームページに戻る ■ ■ 圧縮解凍の部屋に戻る ■