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/