• 締切済み

Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express Editionでerror C2664発生

お世話になります。 Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express EditionでエラーC2664を出してしまい解決法を模索しております。 同様のトラブルを調べてみましたが、例えば「文字セット」を「マルチ バイト文字セットを使用する」にしても改善されませんでした。 void time_sobi(int sobi_time){ long time1,time2 ; time(&time1); time2=time1; while(labs(time1-time2)<sobi_time){ time(&time1); } } 上述の部分で: s\jun\デスクトップ\hight\hight.cpp(112) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>c:\documents and settings\jun\デスクトップ\hight\hight.cpp(115) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 とメッセージが出て、該当する部分はそれぞれ3,6行目のtime(&time1);です。 ご教示くださる方いらっしゃいましたら宜しくお願い致します。

みんなの回答

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.3

そもそも、何をするプログラムなん?? 何をもって、動かないと判断してるの?? エラーダイアログが出るの?? 実行タイミングがおかしいの?? GUIアプリなの?コマンドラインアプリなの?? んーなもん、 「パソコンの電源入れたけど、動かない」って言われたのと同じ状況。 「6.0の時と同様の動作をしない」 で?6.0の時はどういう具合に動作をしていたのでしょうか。 かなり大雑把な質問なので、もう少し的を絞りましょう。 コンパイルが終わったなら、プロジェクトディレクトリの debugという名前のフォルダに実行ファイル(.exeファイル)ができていると思います。 それを直接実行してみたら、どうでしょうか。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

「ちゃんと動かない」って言われても, 「あなたがどのような動作を期待したのか」「実際にどのような動作になったのか」がわからないと判断できない.

cherry_pho
質問者

補足

大変失礼致しました。 「あなたがどのような動作を期待したのか」-->exeファイルが作成され、実行可能となることを期待 「実際にどのような動作になったのか」-->Visual Studio 6.0の時はビルド(F7)した後、実行(Ctrl + F5)で作成された実行ファイル(.exe)が起動していたが、2008 Express Editionではデバッグの開始が相当しているらしく、デバッグ開始を行うとexeファイルが起動するが6.0の時と同様の動作をしない 判断できますでしょうか。宜しくお願い致します。

noname#208124
noname#208124
回答No.1

VC++2005からtime_tの既定は64ビットです _abs64を使って64ビットで処理するか、_time32を使って32ビットで処理してください

参考URL:
http://msdn.microsoft.com/ja-jp/library/1f4c8f33.aspx
cherry_pho
質問者

お礼

dumm様; さっそくのご回答ありがとうございます。以下のように_time32に書き換えたらビルドできました。 void time_sobi(int sobi_time){ long time1,time2 ; _time32(&time1); time2=time1; while(labs(time1-time2)<sobi_time){ _time32(&time1); } } 自分は普段Cを使っていないのでよくわからず申し訳ございませんが、time_tを使う場合 #include <time.h> の宣言が必要なのではないでしょうか?このcppファイルには #include "StdAfx.h" #include <Windows.h> #include "Decl-32.h" の宣言のみです。試しに#include <time.h>の有無で比較してみましたが、関係なくビルドできるようです。

cherry_pho
質問者

補足

すみません、補足です。 StdAfx.h内で#include <time.h>の宣言がありました。 失礼しました。 コンパイルはうまく行ったのですが、exeファイルの実行がちゃんとなされない状況です。 Visual Studio 6.0の時はビルド(F7)した後、実行(Ctrl + F5)で作成された実行ファイル(.exe)が起動していたのですが、2008 Express Editionでは起動はするのですが、ちゃんと動きません。 これでは情報不足かも知れませんが、何かアドバイス・コメントあれば宜しくお願いします。

関連するQ&A

専門家に質問してみよう