作者: davi
日時: 2008/12/23(23:42)
Bruce.さん  <  こん??は でび です

On Tue, 23 Dec 2008 10:55:45 +0900
木村浩一 <kbk@...> wrote:

> あー、あれだ、プロジェクトがUNICODEビルドになってませんか?
> 確か2003→2005でデフォルトビルドの文字コードの扱いが変わっているはずです。

ビンゴ!
おかげさまで、上手く行きました。バッチリ解決。

−−−−−−−−−−−−−−−−−−−
一応、自分用メモを兼ねて書いておきます。

VisualStudio2005のメニュー[プロジェクト]から、現在のプロジェクトの
プロパティを開き、[構成プロパティ]→[全般]の設定をいじる。

MFCの使用 標準Windowsライブラリを使用する。
ATLの使用 ATLを使用しない。
文字セット マルチバイト文字セットを使用する。

こんな感じにしました。
仰るとおり、「文字セット」のデフォルトがUnicodeになっていました。

デバッグでのコンパイルで動くのにリリースでコンパイルしないと
動かないよぉ、なんで?…とちょっと時間がかかりましたが、
それぞれ別に指定できるようになっていることに気づいて、解決できました。

その他は、cppの冒頭に
  #include "stdafx.h"  // MS Visual C++
という行があったので、[構成プロパティ]→[全般]→[C/C++]→[詳細]で
「c++コードとしてコンパイル(/tp)」を選択。

以下、コードの書き換えをした部分。

ダミーとして新規にプロジェクト作成をすると、雛形が出て来て、
見比べると「int _tmain」の書式が違うみたい。
古い方をコメントアウトして

int _tmain(int argc, _TCHAR* argv[])  // _TCHAR*
{

に変更。

あと、intと仮定しましたとかいう、C4430エラーが
  static rec_level = 1;
と言う部分で出ましたが、先頭にintを加えて
  int static rec_level = 1;
としただけで解決できました。

んで、これでビルド。

> このエラーはビルドの結果できた実行ファイルを実行したときのエラーですよね?
> fopenに渡されてきているパラメーターの問題ではないでしょうか。

昨晩のメールのPOST前に確認したんですが、おかしくなさそうだし…と。
ビルドの文字コードをいじったら、このエラーは消えました。

文字コード設定がファイル名を受け取るところで変な動作をしていた、ってこと
ですかね。

> いや“warning”ですし、これはとりあえずは放置しても害はないはずです。

> > #define _CRT_SECURE_NO_WARNINGS

は外しました。
相変わらず「warning C4996: 'fopen'」は出ますけど、ビルドできましたし、
実害はないようです。

ありがとうございました。

---------------------
今回学んだこと。

MSのものを使うと、「俺様の世界(MFCとかATLとか)に安住する限りは
便利だけど、外の世界では通用しないよ。」という風になるようです。
ビッグブラザーの世界そのまんま。こわいこわい。

それと対照的かもしれない話題。
昨日、airのサンプル(http://adobe-ria.jp/air/)を幾つか落として試しました。
書道ソフト“AirShodo”に感動。
Javaアプリより軽いし、色んな可能性がありそうで、面白いですね。

でび  http://davi.txt-nifty.com/1984/