Easy Stereo Processing LIBrary
ESPLIB 8.7
"esplib.h" by I.N. 2022/1/4

目次

1.はじめに
2.特長
3.動作環境
4.インストール方法
5.アンインストール方法
6.使用手順
7.全般的な説明
8.メインウィンドウ
9.イメージウィンドウ
10.テキストウィンドウ
11.インプットボックス
12.ボタンボックス
13.ウィンドウの配置を視覚的に行うには
14.実行ファイルを他の動作環境で実行する
15.ESPLIBをライブラリモードで使用する

16〜29 サンプルプログラム
30〜41 関数リファレンス
42 バージョンアップ履歴
43〜46 著作権・使用許諾,作者への連絡先 等


はじめに

 本製品をお買い上げいただき誠にありがとうございます.(無料です)
 このライブラリ関数を使えば,Windowsパソコン上で誰でも手軽に画像処理プログラミングができます.
 画像処理以外の用途にも使えますので,ぜひ一度お試しください.


特長

 (1) 最大256個までイメージウィンドウを開けるので,ステレオ画像処理等に便利です.
 (2) 任意のサイズでイメージウィンドウを開くことができます.また,画像サイズとは別に表示倍率も設定できます.
 (3) 現在のパレットモードに関係なく内部は常に32ビット(8ビットも選択可)で処理されます.
 (4) 点,直線,円,円弧,ペイント,ボックス,TrueTypeテキストなどの描画関数が用意されています.
 (5) RGB/HSV/YCrCb/YUV/YIQ色変換,時間計測関数が用意されています.
 (6) テキストウィンドウを開けば文字や数値の入出力が行えます.テキストウィンドウは最大256個まで開くことができます.
 (7) インプットボックスやボタンボックスによる入出力インタフェースが利用できます.
 (8) BMP/JPEG/GIF/PNG/TIFF等の画像ファイルの読み書きができます.
 (9) 3つの空の関数を用意するだけで ESPLIB をすぐに使うことができます.(アプリケーションモード)
 (10) コンソールアプリなどからライブラリ関数として呼び出すこともできます.(ライブラリモード)

動作環境

 OS:Windows Vista/7/8/8.1/10/11 (x86/x64)
 必要ソフト:Visual C++
        例1 Visual Studio Professional 2022/2019/2017/2015/2013/2012/2010/2008
        例2 Visual C++ 2008 Express Edition※1

 ※1 Express Edition では,Windows SDK を別途インストールする必要があります.


インストール方法

 Visual C++ 2010以降の場合

 以下の方法を例として挙げておきます.(他の方法でも構いません.)

方法1:
 esplib.h を適当なフォルダに置いておく.先にプロジェクト(下の使用手順を参照)を作成した後,「表示」→「プロパティ マネージャー」→(プロジェクト名)→「Debug | Win32」あるいは「Release | Win32」→「Microsoft.Cpp.Win32.user」をクリックしてダイアログを開く.「共通プロパティ」→「VC++ディレクトリ」→「インクルード ディレクトリ」を編集し,esplib.hを置いたディレクトリを追加する.この方法で追加されたインクルード ディレクトリは,同じ種類(Win32 アプリケーション)の他のプロジェクトを作成した場合にも適用されます.


 Visual C++ 2008 の場合

 以下の2方法を例として挙げておきます.(他の方法でも構いません.)

方法2:
 esplib.h を適当なフォルダに置いておく.Visual C++ で「ツール」→「オプション」→「プロジェクトおよびソリューション」→「VC++ディレクトリ」→「ディレクトリを表示するプロジェクト:インクルードファイル」の画面を表示させ,esplib.h を置いた先のフォルダ名を追加登録する.

方法3:
 Visual C++ が C:\Program Files\Microsoft Visual Studio 9.0 フォルダにインストールされている場合を例にとると,C:\Program Files\Microsoft Visual Studio 9.0\VC\include フォルダの中に esplib.h をコピーする.


アンインストール方法

方法1,2でインストールした場合
 インストールの時と同じ手順でダイアログを表示させ,自分が追加したフォルダ名の登録を削除する.

方法3でインストールした場合
 C:\Program Files\Microsoft Visual Studio 9.0\VC\include フォルダの中にある esplib.h を削除する.


使用手順

 Visual C++ 2008の初心者は以下の手順に従い,基本的な使い方を理解してください.(Visual C++ 2010以降もほぼ同様)
 なお,以下はESPLIBを通常のアプリケーションモードで使う場合の方法です.ライブラリモードで使う場合の説明はこちらにあります.

(1) Visual C++ を起動する.

(2) 「ファイル」→「新規作成」→「プロジェクト」

(3) プロジェクトの種類は「Visual C++ Win32」,テンプレートは「Win32 プロジェクト」,プロジェクト名は適当に.例 test など.場所も適当に設定する.そして「OK」.
  Visual C++ 2017の場合,「Visual C++」→「Windows デスクトップ」→「Windows デスクトップ ウィザード」を選択する.

(4) Win32 アプリケーション ウィザードが出たら,アプリケーションの設定で,「空のプロジェクト」にチェックを入れて,「完了」.
  Visual C++ 2017の場合,Windows デスクトップ プロジェクトが出るので,ここで「Windows アプリケーション(.exe)」を選択し,
  「空のプロジェクト」にチェックを入れて,「OK」.


(5) ソリューション エクスプローラのソース ファイルで右クリックするとメニューが出るので,「追加」→「新しい項目」を選ぶ.

(6) カテゴリ:「Visual C++」,テンプレート:「C++ファイル」を選び,ファイル名に適当な名前を入力する.例 test そして,「追加」.

(7) ESP_Ready(), ESP_Main(), ESP_Finish() 関数を含むプログラムを書く.(サンプルプログラムの項を参照してください)

(8) 「ビルド」→「ソリューションのビルド」でコンパイル&リンクする.

(9) 「デバッグ」→「デバッグなしで開始」で実行する.(この段階でESP_Ready()が実行される)

(10) Startメニューまたは Sキー を押すとESP_Main()が実行される.

(11) Exitメニュー または Xキー を押すとプログラムが終了する.

(12) 「ファイル」→「ソリューションを閉じる」

(13) Visual C++ を終了する.


Visual C++ をよく知らない人への注意事項

次回からはVisual C++ を起動した後,「ファイル」→「開く」→「プロジェクト/ソリューション」で test.sln (←例)を指定するだけで,前回の作業の続きを行うことができます.

test.cpp (←例)という名前でソースファイルを作成した場合,勝手に test2.cpp(←例)などと名前だけを変更することはできません.test.cpp (←例)の内容は修正してもよいが,ファイル名は最後まで変更せずにプログラム作成を行ってください.

新規にプログラムを作る場合は,プロジェクトの新規作成[手順(2)]から行ってください.

プログラムを実行したあとは,実行中のプログラムを必ず終了させてください.終了させずにプログラムを修正し,ビルドや実行をすることはできません.


全般的な説明

関数リファレンス:全体に関するもの

最低限 ESP_Ready(), ESP_Main(), ESP_Finish() の3つの関数が必要です.(ただし,通常のアプリケーションモードの場合).これらの関数の内容は空でも結構です.これは,最も単純なプログラムの例です.ライブラリモードではこれらの3つの関数は不要です.ライブラリモードの説明は,こちらにあります.

プログラムが実行された時点で,ESP_Ready() が自動的に呼び出されます.さらに Start メニュー(またはSキー)を押すと,ESP_Main() が実行されます.

プログラムを終了するには Exitメニュー(または Xキー,ESCキー)を押します.ESPLIB は終了する前に ESP_Finish() を呼び出します.この終了操作が行われると,ESP_Ready(), ESP_Main(), ESP_Finish() 等においてプログラムが無限ループに陥った状態であったとしても,2秒後には強制終了します.
  この強制終了までのこの2秒という時間は,ESP_EXITTIMEを定義すると変更できます.esplib.hのインクルードより前に定義してください.単位はミリ秒になります.
 5秒に設定する例:
 #define ESP_EXITTIME 5000
 #include <esplib.h>

ESPLIBのすべてのウィンドウにおいて,Ctrlキーを押しながらウィンドウを動かすと,近くのウィンドウに吸い付く機能が働きます.

ESPLIBのすべてのウィンドウにおいて,Altキーを押しながらウィンドウを動かすと,他のウィンドウも同時に移動します.

ESCキー,Xキー,Sキー,Cキーの操作はインプットボックスがアクティブ(最前面)状態のときは無効です.


メインウィンドウ



Start メニュー(または Sキー)を押すと,ESP_Main() が実行されます.

Stop メニュー(Cキーも含む)を使用可能とするには,プログラム中で ESP_STOP に関する記述が必要です.

Exit メニュー(または Xキー,ESCキー)を押すと ESPLIB は終了します.ESPLIB は終了する前に ESP_Finish() を呼び出します.この終了操作が行われると,ESP_Ready(), ESP_Main(), ESP_Finish() 等においてプログラムが無限ループに陥った状態であったとしても,2秒後には強制終了します.

ESPLIB起動時にメインウィンドウが出現されないようにすることもできます.方法は,下の例のようにesplib.hのインクルードより前に,ESP_HIDE_MAINWINDOWを定義してください.ただし,メインウィンドウを通した操作は使えなくなります.また,ESPLIBを簡単に終了させられなくなる原因になり得るので注意してください.もし,他のすべてのウィンドウも閉じてしまってExitやESC, Xキーによる終了ができなくなった場合は,タスクマネージャーを起動させて実行中のプログラムを終了させてください.
 メインウィンドウが出現しないようにする例:
 #define ESP_HIDE_MAINWINDOW
 #include <esplib.h>

ESPLIB起動時にメインウィンドウが落下しながら登場するアニメーションを飛ばして,直ちにメインウィンドウを表示させることができます.方法は,下の例のようにesplib.hのインクルードより前に, ESP_SKIPANIMATIONを定義してください.
 起動時のアニメーションをスキップする例:
 #define ESP_SKIPANIMATION
 #include <esplib.h>

通常,メインウィンドウ上には現在のパレットモードが表示されています.マウスのクリックが要求されている場合には,このウィンドウにその旨のメッセージが表示されるので,イメージウィンドウに対してクリック操作を行ってください.このとき,左クリックは座標の指定,右クリックはキャンセルの働きをします.また,文字入力が要求されている場合もその旨のメッセージがここに表示されます.

メインウィンドウ上でマウス右ボタンを押すと下のようなポップアップメニューが現れます.このポップアップメニューの説明.



メインウィンドウにおけるポップアップメニューの説明
Paste
 クリップボードにビットマップ画像があれば,その画像と同じサイズのイメージウィンドウを新規作成し,その画像を表示します.
Start
 ESP_Main() 関数を実行します.
Stop
 変数 ESP_STOP の値を 1 にセットします.この変数を使用したプログラムはユーザ側で作成してください.
Exit
 ESPLIB を終了させます.
Image Window
 新規にイメージウィンドウを開きます.横および縦のサイズ,ビット数を聞いてくるので入力してください.
Text Window
 新規にテキストウィンドウを開きます.
Input Box
 インプットボックスを開きます.項目の数を聞いてくるので入力してください.すでに古いインプットボックスが開かれている場合,新しいインプットボックスに置き換えられます.
Button Box
 ボタンボックスを開きます.ボタンの横数および縦数を聞いてくるので入力してください.すでに古いボタンボックスが開かれている場合,新しいボタンボックスに置き換えられます.
Window Info.
 ESPLIB における(インプットボックスやボタンボックスも含む)各ウィンドウの情報をテキストウィンドウに表示します.そして,現在のウィンドウ配置を出現させるためのレイアウト作成ソースリストをクリップボードに保存します.保存されたソースリストはテキストエディタ上で「貼り付け/ペースト」を行えば利用できます.メインウィンドウについては,標準位置から変更されている場合にのみ,その位置が表示されます.参考:「ウィンドウの配置を視覚的に行うには

メインウィンドウへ画像ファイルをドラッグ&ドロップすることにより,イメージウィンドウを生成して画像を表示することができます.複数ファイルのドラッグ&ドロップにも対応しています.


イメージウィンドウ



関数リファレンス: イメージウィンドウ関連グラフィックス描画関連テキスト描画画像ファイル関連色変換文字コード変換

イメージウィンドウは,点や線,文字などのグラフィックスを描画するためのウィンドウです.イメージウィンドウには32ビットモードと8ビットモードの2種類があります.現在のパレットモードに関係なくESPLIB の内部では32ビットあるいは8ビットで画像の記憶や処理が行われます.

8ビットモードのイメージウィンドウではウィンドウタイトルの一部に"[8bit]"と表示されます.

一連の描画関数を実行した後は,ESP_Update()等でウィンドウ内容を更新して下さい.この更新が行われない限り,イメージウィンドウは古い内容のままです.

イメージウィンドウは複数(最大256個)開くことができます.描画,点情報の読み取り,更新などはESP_Select()等によって現在選択されているウィンドウに対して行われます.

表示倍率が100%のとき,最も高速に画面更新が行われます.現在の表示倍率はタイトルの末尾に表示されます.

タイトル表示の末尾に "*" 印があるとき,表示方法がHALFTONE状態であることを示します.イメージウィンドウがアクティブのときに TABキーを押すことによって表示方法を手動で切り替えることが可能です.詳しくはESP_SetDisplayMode()を参照してください.

イメージウィンドウ上でマウス右ボタンを押すと下のようなポップアップメニュー(1) が現れます.ポップアップメニュー(1)の説明.



イメージウィンドウにおけるポップアップメニュー(1)の説明

Cut
 イメージウィンドウの画像をビットマップとしてクリップボードへ切り取ります.ショートカットキーは CTRL+X です.
Copy
 イメージウィンドウの画像をビットマップとしてクリップボードへコピーします.ショートカットキーは CTRL+C です.
Paste
 クリップボードにビットマップ画像があれば,そのイメージウィンドウへ貼り付けます.画像サイズは自動調整されません.貼り付ける中心位置をマウスで指定します.ショートカットキーは CTRL+V です.ただし,キー操作の場合,貼り付け位置は指定できません.
Load image file
 画像ファイルを指定するためのコモンダイアログボックスを開き,その画像を読み込んで表示します.各種の画像形式を読み込むことができます.
Save as
 そのイメージウィンドウの画像をファイルとして保存します.ファイル名を入力するためのコモンダイアログボックスが開くので入力してください.保存形式はBMP,JPEG,GIF,PNG,TIFFから選択します.JPEG形式で保存するときの画質は100[%]に固定されています.
Zoom:50%
Zoom:100%
Zoom:200%

 表示倍率を規定の値に変更します.ただし,画面解像度の上限のため,指定した表示倍率にならない場合があります.100%にするときのショートカットキーは CTRL+0(テンキーのゼロ)です.
Zoom...
 表示倍率を入力した値に変更します.テキストウィンドウが開くので値を入力してください.ただし,画面解像度の上限のため,指定した表示倍率にならない場合があります.
Resize
 イメージウィンドウの画像サイズを変更します.横および縦のサイズを聞いてくるのでピクセル単位で入力してください.
Destroy
 そのイメージウィンドウを消滅させます.ショートカットキーは CTRL+Q です.

イメージウィンドウ上で Ctrlキー+マウス右ボタン(またはマウス中ボタン)を押すと下のようなポップアップメニュー(2) 現れます.ポップアップメニュー(2)の説明.



イメージウィンドウにおけるポップアップメニュー(2)の説明

Process... 画像処理のサブメニューが開きます.
 Invert…ネガ/ポジ反転 R. Rotate…右回転 L. Rotate…左回転 Horz. Flip…左右反転 Vert. Flip…上下反転
 Size xxx%…拡大または縮小 (そのイメージウィンドウの表示方法がHALFTONEかCOLORONCOLORかによって処理結果が異なります)

Information... 画像情報の取得に関するサブメニューが開きます.イメージウィンドウの種類が32ビットモードか8ビットモードかにより表示されるサブメニューは異なります.
・32ビットモード
 Pixel 点の情報(座標および色)を表示します.1点を指定してください.
 Line(RGB)/Line(HSV)/Line(YCrCb) 水平線の色情報を RGB/HSV/YCrCb成分に分けて断面表示します.水平ラインを指定してください.
 Line(CrCb) 水平線の色情報を CrCb平面で表示します.水平ラインを指定してください.
 Area(CrCb) 領域の色情報を CrCb平面で表示します.矩形領域を指定してください.
・8ビットモード
 Pixel 点の情報(座標および輝度)を表示します.1点を指定してください.
 Line(Lumi) 水平線の輝度情報を断面表示します.水平ラインを指定してください.

Test Pattern... テストパターン描画のサブメニューが開きます.RGBやHSVなど各種のテストパターンを描画します.8ビットモードのイメージウィンドウにおいてGreyを選択するとそのウィンドウのカラーテーブルは強制的にグレースケールに設定されます.

Clipping イメージウィンドウの一部分をクリッピングし,その内容を持つイメージウィンドウを新たに開きます.ショートカットキーは CTRL+R です.

Color...
 Change 描画色を変更します.色を指定するためのダイアログボックスが開きます.
 Pick 描画色を画像より取得します.イメージウィンドウ内において1点を指定してください.

Draw Line... 直線描画のサブメニューが開きます.各種直線が描画できます.

Draw Box... ボックス(箱)描画のサブメニューが開きます.各種ボックスが描画できます.

Draw Circle... 円描画のサブメニューが開きます.各種円が描画できます.

TrueType...
 Draw TrueTypeフォントでテキストを描画します.最初の文字を描画する範囲を指定してください.ここで指定する大きさは全角文字のときの大きさです.半角文字の幅は,ここで指定した幅の半分の大きさになります.その後,文字列を聞いてくるので入力してください.
 Font Change 描画フォントを変更します.ダイアログボックスが開くのでフォントを選択してください.

Draw Text ESPLIB が提供するドットフォントでテキストを描画します.描画開始点(左下)を1点指定してください.また,文字列を聞いてくるので入力してください.

Paint 塗りつぶしを実行します.開始点を1点指定してください.

イメージウィンドウ上へ画像ファイルをドラッグ&ドロップすればそのファイルが表示されます.ただし,ウィンドウサイズは自動調整されません.

イメージウィンドウ上で Ctrlキーを押しながらホイールマウスのホイールを前後に動かすと,表示倍率(ズーム)のアップ/ダウンが行えます.また,CTRL+'+'(テンキーのプラス) および CTRL+'-'(テンキーのマイナス) でも表示倍率のアップ/ダウンが行えます.


テキストウィンドウ



関数リファレンス: テキストウィンドウ関連テキスト入出力

テキストウィンドウは文字や数値の出力および入力を行うためのウィンドウです.

テキストウィンドウは複数(最大256個)開くことができます.テキストウィンドウが複数存在する場合,テキストの入出力は選択されているウィンドウに対して行われます.ウィンドウの選択にはESP_SelectTW()等を使います.

ESP_Printf()ESP_Puts()で文字出力ができますが,表示速度を上げるために,これらの関数ではウィンドウ内容は更新されません.更新するには,呼び出し毎に更新を行う関数ESP_PrintfU()ESP_PutsU()を使うかESP_STOPによるStopメニューの確認を利用して内容を更新してください.

ESP_Input()によって文字入力ができます.このとき,カーソル上キーを押すと前回入力した文字列を呼び出すことができます.また,Ctrl+Vキーによってクリップボードのテキストを貼り付けることができます.

各ウィンドウ毎に文字色および背景色の設定ができます.

テキストウィンドウ上でマウス右ボタンを押すと下のようなポップアップメニューが現れます.このポップアップメニューの説明.



テキストウィンドウにおけるポップアップメニューの説明
Select
 そのテキストウィンドウを選択状態に設定します.そのテキストウィンドウが選択状態にあるとき,このメニューの左橋にチェックマークが付きます.
Window Info.
 ESPLIB における(インプットボックスやボタンボックスも含む)各ウィンドウの情報を表示します.そして,現在のウィンドウ位置を出現させるためのレイアウト作成ソースリストをクリップボードに保存します.保存されたソースリストはテキストエディタ上で「貼り付け/ペースト」を行えば利用できます.メインウィンドウについては,標準位置から変更されている場合にのみ,その位置が表示されます.参考:「ウィンドウの配置を視覚的に行うには
Command
 コマンド入力モードになります.現在のところ,あまり大したコマンドはサポートされていません.help と入力すると,コマンドリストが表示されます.テキストウィンドウにおいて,入力状態でないときに SPACEキーを押してもこのモードになります.
Start Log
 そのテキストウィンドウについて,ログ処理を開始します.ESP_StartLog() 等を参照してください.
Stop Log
 そのテキストウィンドウについて,ログ処理を(一時)中断します.ESP_StopLog() 等を参照してください.
Copy ESPLIBx.LOG
 そのテキストウィンドウについて,カレントディレクトリに存在するログファイルの内容をクリップボードにコピーします.ログ処理が開始されていなければ,ログファイルは存在しないため,このメニューは使えません.ただし,前回のログファイルが残っていればその内容がコピーされます.
About ESPLIB
 ESPLIB のバージョン情報を表示します.
Destroy
 そのテキストウィンドウを消滅させます.

テキストウィンドウはマウス操作により半角文字の刻み幅でサイズ変更が可能です.サイズ変更すると表示内容は消去されます.また,SHIFTキーを押しながらサイズ変更を行うと,1ピクセル刻みでサイズ変更できます.

テキストウィンドウで SPACEキーを押すとコマンド実行モードになります.現在のところ,あまり大したコマンドはサポートされていません.help と入力すると,コマンドリストが表示されます.

ログ機能を使うと,テキストウィンドウへ出力される内容をファイルに自動的に保存することができます.ESP_StartLog()等を参照してください.


インプットボックス



関数リファレンス: インプットボックス関連

インプットボックスは,数値や文字を任意のタイミングで入力/出力するためのウィンドウです.

インプットボックスは,プログラムを走らせながら,再コンパイルすることなしに特定のパラメータを変更したい場合に威力を発揮します.

インプットボックスで扱える項目数の上限は30です.

各項目の名前部分をダブルクリックすると,名前を変更することができます.

各項目に入力された数値あるいは文字は,TABキーが押される,他のウィンドウがアクティブになる,Enterキーが押される,のいずれかが行われるとき,更新内容が有効になります.

インプットボックスの左端をマウスでドラッグすると,名前部分のサイズが変更できます.また,反対に,インプットボックスの右端をマウスでドラッグすると,入出力部分のサイズが変更できます.


ボタンボックス



関数リファレンス: ボタンボックス操作

ボタンボックスは,ボタンクリックによるユーザインタフェースを提供します.

ボタンボックスで扱えるボタンの最大数は256です.

ボタンの数は横数および縦数で指定します.各ボタンには番号がついており,左上のボタンが番号0です.そして,画像と同じように右のボタンへ進む毎に番号が1つ増加し,右端までいったら下の行に移ります.

ボタンボックスは各ボタンがクリックされた回数を記憶しています.

各ボタンの左サイド部分をダブルクリックすると,名前を変更することができます.

ボタンボックスがアクティブ(最前面)状態のとき,数字キー(0 〜 9)を押すと各ボタンをクリックしたのと同じ効果があります.

ボタンボックスの端をマウスでドラッグすると,ボタンボックスのサイズを変更することができます.このとき,各ボタンのサイズは変更されますが,ボタンの横数および縦数は変化しません.


ウィンドウの配置を視覚的に行うには

 以下の手順に従えば,各ウィンドウの配置を視覚的に行った後,その配置を自分のソースリストに反映させることができます.メインウィンドウについては,標準位置から変更されている場合にのみ,位置変更のソースリストが一緒に出力されます.

(1) メインウィンドウのポップアップメニュー等を使って画面上に各種ウィンドウを出しておきます.

(2) マウスを使って配置を決定します.

Ctrlキーを押しながらウィンドウを移動させると,近くのウィンドウに吸い付く機能が働きます.

Altキーを押しながらウィンドウを移動させると,すべてのウィンドウが同時に移動します.

(3) テキストウィンドウまたはメインウィンドウのポップアップメニューの中からWindow Info.を選択します.

(4) ソースリストを編集しているテキストエディタ上で貼り付け(ペースト)を選択すれば,各ウィンドウを生成するためのソースリストが自動的に完成します.


実行ファイルを他の動作環境で実行する

 作成した実行ファイル(*.exe)ファイルを別のPCや他の動作環境(OS)上で実行させようとして,エラーメッセージが表示されることがあります.

 他の動作環境でも実行できる実行ファイルを作成するには,以下のようにします.

1.VC++においてプロジェクトを開き,「プロジェクト」→「プロパティ」によりプロパティ ページを出します.
2.「構成プロパティ」→「C/C++」→「コード生成」を選択します.
3.「ランタイム ライブラリ」の欄が,
    /MDd であれば,/MTd へ変更します.
    /MD であれば,/MT へ変更します.
4.プロジェクトをビルドします.作成した実行ファイルは他の動作環境でも実行できます.ただし,ESPLIBが元々対応していないOS上では実行できません.

Visual C++ 2013などでは,Windows XP上で動作するプログラムを作成する場合,プロジェクトの設定(全般−プラットフォームツールセット)をWindows XP用(v120_xp等)にしておく必要があります.


ESPLIBをライブラリモードで使用する

 ライブラリモードでは,他のアプリから呼び出す関数ライブラリとして使うことができます.例えば,main()関数で始まるWin32 コンソールアプリケーションでも使えるようになります.ESPLIBをライブラリモードで使用するには,下の例のようにesplib.hのインクルードより前にESP_LIBRARY_MODEを定義してください.そして,最初にESP_Start()を呼び出してください.また,終了時にはESP_Exit()を呼び出してください.

 ライブラリモードで使う例(Win32 コンソール アプリケーションの例)
#define ESP_LIBRARY_MODE
#include <esplib.h>

int main(void)
{
    ESP_Start();

    ESP_CreateImage(0,"ImageWindow",432,17,320,240,100);
    ESP_OpenTextWindow(0,0,0,400,288);
    
    ESP_Circle(160,120,50,0x00ff00);
    ESP_Update();

    int n=0;
    for(;;){
        if(ESP_STOP) break;
        ESP_Printf("n=%d\n",n++);
    }

    char s[10];
    printf("Hit enter key to exit program.");
    gets_s(s,sizeof(s));
    
    ESP_Exit();
    return 0;
}

 なお,ライブラリモードでは,ESP_Ready(), ESP_Main(), ESP_Finish()の関数は不要となり,これらの関数についての説明は無視してください.また,デフォルトではメインウィンドウも出現しませんので,Start/Stop/Exitメニュー等のメインウィンドウを通した操作は利用できません.
 ただし,メインウィンドウはESP_Start()の第1引数に1を指定すると表示させることができます.この場合でもメインウィンドウのStartメニューは機能しません.

 あとは,基本的に通常のアプリケーションモードと同様に様々な関数が利用できます.