☆'s Borland C++ Compiler Environment
☆☆ もくじ ☆☆
0. はじめに
1. Borland C++
2. GLUT
3. GLUI
4. OpenCV
戻る
このページでは BCC および各種ライブラリのインストール手順を淡々と記述する。
Windows XP を想定しているが、Windows Vista、Windows 7 でもほぼ同様。
※ BCC と GLUT については Borland C++ Compiler Install も参照。
※ VC における GLUT と GLUI については GLUT を使ってみよう! と GLUI を使ってみよう! を参照。
↑
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 ) 。
↑
ダイナミック (動的) リンクライブラリなので、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 する。
↑
スタティック ( 静的 ) リンクライブラリなので、ソースコードをコンパイルして 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 ) でリンクする。
ダイナミック (動的) リンクライブラリ。ここでは元の 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