☆'s Borland C++ Compiler Environment

☆☆ もくじ ☆☆
0. はじめに
1. Borland C++
2. GLUT
3. GLUI
4. OpenCV

戻る

0. はじめに
このページでは BCC および各種ライブラリのインストール手順を淡々と記述する。
Windows XP を想定しているが、Windows Vista、Windows 7 でもほぼ同様。

※ BCC と GLUT については Borland C++ Compiler Install も参照。

※ VC における GLUT と GLUI については GLUT を使ってみよう!GLUI を使ってみよう! を参照。


1. Borland C++
1-1. ダウンロード
Borland C++ Compiler 5.5.1 [ freecommandlinetools2.exe ]
setbcc [ setbcc15.exe ]
BCC Developer [ bccdev1221.lzh ]
1-2. インストール
1. freecommandlinetools2.exe を実行してインストール。デフォルトは C:\borland\bcc55。
2. setbcc15.exe を解凍。setbcc.exe を実行して設定。念のため PC を再起動。
  ※ エラーが出たときはここを参照して PATH を通す ( 以下の作業で implib などを使うため )。
3. bccdev1221.lzh を解凍して、C:\Program Files に置く。
4. BccDev.exe を起動して、コンパイラに bcc を指定 ( C:\borland\bcc55\Bin\bcc32.exe ) 。


2. GLUT ( OpenGL Utility Toolkit )
ダイナミック (動的) リンクライブラリなので、DLL から BCC 用の LIB を生成する。
201012/01 時点での最新バージョンは GLUT 3.7.6。

2-1. ダウンロード
GLUT [ glut-3.7.6-bin.zip ]
2-2. インストール
1. glut-3.7.6-bin.zip を解凍する。
2. glut.h の 146 行目「extern _CRTIMP void __cdecl exit(int);」をコメントアウト。
3. コマンドプロンプトを起動して、glut32.dll のあるフォルダへ移動。
    # "cd "とタイプしたあと、当該フォルダのアドレスバーのフォルダアイコンを
    # コマンドプロンプトにドラッグ&ドロップすると入力が簡単。
  "implib glut32.lib glut32.dll" というコマンドを実行し、BCC 用の glut32.lib を生成。
4. glut.h ( 2. で編集したもの ) を C:\borland\bcc55\Include\Gl に置く。
  glut32.lib ( 3. で生成したもの ) を C:\borland\bcc55\Lib\PSDK に置く。
  glut32.dll を C:\WINDOWS\system32 に置く。
2-3. 使用法
1. プログラムの冒頭で glut.h を stdlib.h ( または windows.h ) の後に include する。


3. GLUI ( OpenGL User Interface Library )
スタティック ( 静的 ) リンクライブラリなので、ソースコードをコンパイルして BCC 用の LIB を生成する。
2010/12/01 時点での最新バージョンは GLUI 2.35 だが、☆はまだ試していない。

3-1. ダウンロード
GLUI [ glui_v2_1_beta.zip ]
ctlib [ ctlib103.lzh ]
3-2. インストール
1. ctlib103.lzh を解凍して、ctlib.exe を C:\borland\bcc55\Bin に置く。
2. glui_v2_1_beta.zip を解凍する。
3. makefile をメモ帳などで開き、BCC 用に書き換える。
   (1) 文書全体 : .o ⇒ .obj
   (2) 8 行目 : GLUT_LIB_LOCATION=/unc/walk/lib/sgi_irix ⇒ GLUT_LIB_LOCATION=C:\borland\bcc55\Lib\PSDK
   (3) 9 行目 : GLUT_INC_LOCATION=/unc/walk/include ⇒ GLUT_INC_LOCATION=C:\borland\bcc55\Include\GL
   (4) 15 行目 : CC=CC -g0 -o32 ⇒ CC=bcc32
   (5) 28 行目 : All: lib/libglui.a bin/example1 bin/example2 bin/example3 bin/example4 bin/example5 ⇒ All: glui32.lib
   (6) 32 行目 : bin/example1: $(GLUI_OBJS) example1.o lib/libglui.a ⇒ glui32.lib: $(GLUI_OBJS)
   (7) 54 行目 : ar -r lib/libglui.a $(GLUI_OBJS) ⇒ ctlib glui32.lib +$(GLUI_OBJS)
   (8) 33-52 行目 : 削除
   (9) 68-71 行目 : 削除
4. glui.h において GL/glut.h が stdlib.h の後に include されるよう書き換える。
5. コマンドプロンプトを起動して、makefile ( 3. で編集したもの ) のあるフォルダへ移動。
  "make -f makefile" というコマンドを実行し、BCC 用の glui32.lib を生成。
6. glut.h ( 4. で編集したもの ) を C:\borland\bcc55\Include\Gl に置く。
  glui32.lib ( 5. で生成したもの ) を C:\borland\bcc55\Lib\PSDK に置く。
3-3. 使用法
1. プログラムの冒頭で glui.h を include する。
2. glui32.lib をプロジェクトの設定 ( あるいは #pragma ) でリンクする。

4. OpenCV ( Open Computer Vision Library )
ダイナミック (動的) リンクライブラリ。ここでは元の VC 用の LIB から BCC 用の LIB を生成する。
2010/12/01 時点での最新バージョンは OpenCV 2.x だが、☆はまだ試していない。

4-1. ダウンロード
OpenCV [ OpenCV_1.0.exe ]
 ※ ページ下方の [ opencv-win ] → [ 1.0 ] → [ OpenCV_1.0.exe ]
4-2. インストール
1. OpenCV_1.0.exe を実行してインストール。デフォルトは C:\Program Files\OpenCV。
 ※ Windows Vista、Windows 7 では Program Files フォルダにアクセス制限がかかっており、以下の作業ができない。
   C:\OpenCV などに配置し直し、以下の説明で OpenCV フォルダの位置を適宜読み替える。

2. コマンドプロンプトを起動して、C:\Program Files\OpenCV へ移動。
  "mkdir lib_bcc" というコマンドを実行し、BCC 用ライブラリフォルダを作成。
  "coff2omf lib\cv.lib lib_bcc\cv.lib" などとして、lib フォルダ内のライブラリを一通り変換。
3. C:\borland\bcc55\Bin\bcc32.cfg を以下のように書き換える。
    -I"C:\borland\bcc55\include"
    -L"C:\borland\bcc55\lib"
    -I"C:\Program Files\OpenCV\cv\include"
    -I"C:\Program Files\OpenCV\cxcore\include"
    -I"C:\Program Files\OpenCV\otherlibs\highgui"
    -L"C:\Program Files\OpenCV\lib_bcc"
  C:\borland\bcc55\Bin\ilink32.cfg を以下のように書き換える。
    -L"C:\borland\bcc55\lib";"C:\Program Files\OpenCV\lib_bcc"
4. C:\Program Files\OpenCV\bin の DLL ファイル 8 個を C:\WINDOWS\system32 に置く。
4-3. 使用法
1. プログラムの冒頭で cv.h、highgui.h を include する。
2. cv.lib、cxcore.lib、highgui.lib をプロジェクトの設定 ( あるいは #pragma ) でリンクする。
3. 画像 image の上下反転への対策 : if(image->origin == 0) image->origin = 1;。
4-4. エラーメッセージ

1. ビルドエラー

  "エラー E2193 C:\borland\******\opencv.c **: 呼び出し時のパラメータが足りない:cvSub(関数 main )"
    原因 : C++ のソースコードを C としてコンパイルしようとしている。
    対策 : ソースファイルの拡張子を .c から .cpp に変える。
         あるいはリファレンスマニュアルを参考にパラメータを過不足なく指定する。mask に NULL と明記するとか。
  "Error: 外部シンボル '_cvSub' が未解決(C:\BORLAND\******\OPENCV.OBJ が参照)"
    原因 : LIB ファイル ( cv.lib、cxcore.lib、highgui.lib ) をリンクしていない。
    対策 : LIB ファイルをプロジェクトの設定か #pragma comment(lib, "cv.lib") などでリンクする
  "Error: 'C:\PROGRAM FILES\OPENCV\LIB\CV.LIB' contains invalid OMF record, type 0x21 (possibly COFF)"
    原因 : VC 用の LIB ファイルをリンクしようとしている。
    対策 : インストール手順で生成した lib_bcc フォルダ内の LIB をリンクするよう設定する。

2. OpenCV GUI Error Handler

  "Null pointer (NULL array pointer is passed) in function cvGetMat"
    原因 : 画像 (IplImage 型) に実体を与えていない。
    対策 : 編集する前に実体を与える ( cvCreateImage )。
  "Bad argument (unrecognized or unsupported array type) in function cvReleaseData"
    原因 : カメラから読み込んだフレーム画像 ( cvQueryFrame(frame) ) を破棄 ( cvReleaseImage ) しようとした。
    対策 : 破棄しない。 ※ なお frame の編集も禁止らしい。cvCopyImage, cvClone, cvCvtColor などでコピーしたものを編集する。
  "Bad argument (Array should be CvMat or IplImage) in function cvGetSize"
    原因 : フレーム画像のサイズ取得 ( cvGetSize(frame) ) がなぜかエラーになる。
    対策 : 代わりに cvSize(640, 480)、あるいは cvSize(frame->width, frame->height) などとする。
  "One of arguments' values is cut of range (index is out of range) in function cvPtr2D"
    原因 : cvGet2D などで画像サイズを超えた座標を指定した。
    対策 : for 文などでうっかり超えてしまうことが多いので注意。

戻る

公開: 2010/12/01
更新: 2011/05/08
Takayuki Hoshi: star(at)kumamoto-u.ac.jp