ページ 11

対処法の分からないバグ

Posted: 2010年7月31日(土) 17:59
by jay
いままでに出くわしたことのない、対処法が全く分からないバグが出てきました。
どなたか対処法を教えて下さい。

error C2664: 'DxLib::printfDx' : 1 番目の引数を 'const char [29]' から 'const TCHAR *' に変換できません。

というものです。
コードは単純に
if(dnumy==0){printfDx("boss_shot_bulletH021で0割り\n"); return ;}

という実行中に誤作動が起きたら(dnumyが0になってしまったら)エラーを知らせると言うだけのものです。

Re:対処法の分からないバグ

Posted: 2010年7月31日(土) 18:09
by Justy
 最新版を入れたのですね。

 プロジェクトの構成プロパティの全般にある文字セットの項目を「Unicode 文字セットを使用する」から
「マルチ バイト文字セットを使用する」に変えてみてください。

Re:対処法の分からないバグ

Posted: 2010年7月31日(土) 19:53
by 初級者
バグではなくて、コンパイルエラーです。

Re:対処法の分からないバグ

Posted: 2010年7月31日(土) 19:55
by jay
Justyさん、たびたび助けていただいてありがとうございます。
おかげで無事ビルド出来ました。

これは・・・、つまり”最新版ならではの都合”と言うやつなのですね。
これで全ての問題は解決した・・・、ハズ・・・。

とにかくお世話になりました。

Re:対処法の分からないバグ

Posted: 2010年8月05日(木) 20:25
by ZASEA
文字列の部分(ダブルクォーテーション)で囲まれているところをその外側からさらに_T()で囲んでください。
そして、ソースの先頭に#include <tchar.h>を追加すると解決できるかもしれません。
これなら文字セットの設定等に関係なくビルドできるようになるはずです。

Re:対処法の分からないバグ

Posted: 2010年8月06日(金) 06:35
by toyo
DXライブラリが3.03からUnicode対応になっていますね
関数の引数がchar*がTCHAR*に変更になっているようです
同様の質問が今後増えそうですね
回答の雛形を用意しておいたほうがいいかも
すでに作成済みのプログラムはプロジェクトの設定を変更にしてこれから作る場合はTCHAR対応で書くのがいいのでしょうか
#include <tchar.h>
は新しいDxLib.hではインクルードされています

Re:対処法の分からないバグ

Posted: 2010年8月06日(金) 08:05
by naohiro19
toyoさん>
Visual Stuidio(以下VS) 2005以上だとデフォルトでUnicode文字列を扱うように変更されています。
VS2005以下だと「マルチバイト文字列」をデフォルトで使うようになっています。

Re:対処法の分からないバグ

Posted: 2010年8月07日(土) 02:53
by Justy
toyoさん
>すでに作成済みのプログラムはプロジェクトの設定を変更にして
>これから作る場合はTCHAR対応で書くのがいいのでしょうか  ですね。
 龍神録系に関しては TCHAR/wchar_tについて知らない「プログラム始めて数週間」という方までもが
使っている現状を考えると、設定でプロジェクトの設定をマルチバイト文字列に変える方が説明する方
としては楽ですね。

 新規の場合でも TCHARを使って本当にどちらの環境でもビルドが通るようにしなければならないケースは
結構希だと思いますので、設定をどちらかにしぼり char / wchar_tのどちらかを使う
(特に理由がなければ 3.03以前のライブラリに差し替えても動くマルチバイト文字列)で
いいのではないでしょうか。

 ちなみに今の 3.03における Unicode対応はまだ途中なのか、一部 charが使われているところが
ありますし、Unicode時のリリースビルドでリンクが通らないなど、問題も残っているようなので
ちょっと要注意なのかも。



naohiro19さん
>2005以上
>2005以下
 2005はどっちに入りますか?

Re:対処法の分からないバグ

Posted: 2010年8月07日(土) 10:57
by toyo
私もVC++6.0から使ってVC++2005EEに変えたときに戸惑いましたね
その後しばらくはずっとTCHARは使わずマルチバイト文字列に変えてやってましたから慣れてない人にはそちらがいいでしょうね