環境パス設定。
本日の部活であった出来事。
開発環境
・OS:Windows8(64bit)
・キーボード:JIS配列
・コンパイラ:Borland C++ Compiler 5.5
・エディタ:Tera Pad
部員T「C++でグラフィック処理したいんだけど、どうすれば出来る?」
俺「***.rcファイルで管理してwindows.h使うか、DxLib.h使うかかな。弄ってみた感じは後者」の方が簡単かな」
〜数分後〜
T「大体サイトと同じようにやったはずなんだけど何かエラー出とる......」
PC交代して作業スタート
まずソースコード
#include <stdio.h>
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
if(DxLib_Init() == -1)
return -1;
else
MessageBox( NULL, "DxLib初期化完了", "Debug", MB_OK);
return 0;
}
ソース自体は改変してあるものの
・初期化に失敗したら強制終了
・初期化に成功したらメッセージボックスを表示して終了
といった仕様で特に問題はない。
続いてコンパイル
GUIアプリケーションだから -W
とりあえず警告は一旦無視するため -w-
実行。
bcc32 -W -w- dx_sample.cpp↵
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
エラー E2209 I:\pcclub\T\prog\dx_sample.cpp 2: インクルードファイル 'DxLib.h' をオープンできない
エラー E2141 I:\pcclub\T\prog\dx_sample.cpp 4: 宣言の構文エラー
*** 2 errors in Compile ***
** error 1 ** deleting Debug\dx_sample.obj
Make End !!
なるほど。
どうやらヘッダファイルのインクルードに失敗している模様。
bcc32.cfgを確認すると
-I"I:\pcclub\T\borland\bcc\bin\Include"
-L"I:\pcclub\T\borland\bcc\bin\Lib; I:\pcclub\T\borland\bcc\bin\Lib\PSDK"
一見、問題が有るようには見えない。
そこで環境パス設定について調べてみた。
すると、
「""で囲んであればフォルダ名に空白を含んでも問題無い。」
これが実は問題だったのだ。
どうやら2行目の後半が
「I」ドライブではなく、
「 I」ドライブ(Iの前に空白有り)として読み込まれていたようだ。
というわけでbcc32.cfgを
-I"I:\pcclub\T\borland\bcc\bin\Include"
-L"I:\pcclub\T\borland\bcc\bin\Lib; I:\pcclub\T\borland\bcc\bin\Lib\PSDK"
から
-I"I:\pcclub\T\borland\bcc\bin\Include"
-L"I:\pcclub\T\borland\bcc\bin\Lib;I:\pcclub\T\borland\bcc\bin\Lib\PSDK"
に書き換えて再コンパイルしたところ無事解決。
基本的に俺はMacで開発しているが、覚えておいたほうが(というよりはいつでも思い出せるようにしておいた方が)良いかなぁ、と思い投稿した。
2014/11/11 Tue.