いまさら、のしつこいような質問で゛申し訳ありません。
今だによくわかっていないので、教えてください。
今、64bitのwindowsのwowで動いている32bitアプリを純粋に!?
64bit上で動かすにはどうしたらよいか、、、
コンパイラーを64bit版にする程度しか、わかりません。
ソースコード的にどれ(データ型?、関数?)をどのように直せばいいのか、
探すのは得意なほうだと思っているのですが、なかなか見つかりません。
下記の情報はあってるでしょうか?
int
CString
time_t
などが変更必要?という情報は見つけましたが、(あってますか?)
int → long? 、 printf()では %d → %ld?
CString → リコンパイルだけでよい?
time_t → 使ってますがソースコード的にどう変更したらよい?
他にもいろいろあると思うのですが
対象のアプリがかなり旧いので(VisualStudio6.0 c++)、よけい探せないのかも知れません。
VisualStudioも64bit対応用に新しく買ってもらわないといけないと思うのですが
はたして使いこなせるか。(これは別問題ですね)
修正規模を出せと言われてるのですが、
どう返事をしたら良いものか、
どうかアドバイスをお願いいたします。
No.5ベストアンサー
- 回答日時:
>もしかして何もしなくていいのかな、、、というところです。
>ホントですかね???
Windows の場合は、アプリでは何もしなくてよいことも多いですよ。
ただし、Windows では整数型のサイズが変わらないので、
動きますけど、32ビットの制限がそのまま残ったりします。
tknakamuriさん、ありがとうございます。
今も聞かれたところなんですが、
IISでwowを有効にすれば、何もしなくても大丈夫です。
と答えておきました。
が、のちのち!?、ゆくゆく!?のことも考えて、
64bit化を調べないといけないようです。
他の人の調査結果を見てみて、自分に関係するところは
32bit固定で判断しているところを64bitにする。
0xffffffff→0xffffffffffffffff
などがありました。
具体的で申し訳ありませんが教えてください。
関数のreturn値を 0 か -1 などで処理を行っていますが
これは64bitでも問題ないですよね?
あとは開発環境の問題(VisualStudioが古い)は別質問したい遠と思います。
No.4
- 回答日時:
>ポインタでint/longを使っているところ
>(つまり int *pt など?)
いえ、整数型でポインタ型を格納したり
ポインタ演算したりしていた場合、
修正が必要になるということ。
特に、各種ハンドル型がポインタ型で64bit
になることをしらない人が多いようです。
tknakamuriさん、ありがとうございます。
まだよく理解できていないのですが、
ポインタ型の格納はしていないし、
演算もしていないので
もしかして何もしなくていいのかな、、、というところです。
ホントですかね???
(って聞いてもわかりませんよね。^^;)
No.3
- 回答日時:
>int → long? 、 printf()では %d → %ld?
どういう意味でしょうか?
64ビット化に合わせて扱えるデータも64ビット化するのならintからint64_tなどにする必要はありますけど、そうでないならintはintのままで構いません。
例えば10回ループするのに
for (int i = 0; i < 10; i++) {
...
}
としてたのを64ビット化するからといって
for (int64_t i = 0; i< 10; i++) {
...
}
なんてする必要ないですよね。
>time_t → 使ってますがソースコード的にどう変更したらよい?
time_tで単純に扱ってるだけならほとんど問題ないかと。
演算などしてたら問題あるかもしれませんが。
他に注意する点としてはポインタのサイズをintのサイズと同じと仮定しコーディングしてないかとかになると思います。
wormholeさん、ありがとうございます。
int ---> long はあるとき、
意識してintは使わずにlongにしてるよ
という話を聞いたことがあるから...でした。
例えば10回loopなどは、桁が越えることは無いから
変更しなくて良い...と言うことですよね?
time_tは演算しています。
ある期間の範囲を演算して、規定の数を超えてるか、などチェックしています。
ここは修正ですね。
なかなかデータ型などの使い方の基本がわかっていないので
まだ わからないことばかりです。
No.2
- 回答日時:
Windows の 64bit化は Windows のモデルが LLP64 なので
意外と修正は少ないです。
修正規模は ミドルや通信系なら1~2%、アプリなら 0.2~0.5% かな。
注意はやっぱりポインタサイズと整数型のサイズが一致しなくなること。
Windows の各種ハンドルはポインタなので int/long で受けたりしてたら修正が必要。
time_tを long で格納なんてのもよくある話ですね。
後、MFC や ActiveX とか使っているアプリは 32bit DLL に依存しているものがあるので
そのDLLの64bit板を入手できないとアウト というのがよくあります。
tknakamuriさん、ありがとうございます。
修正規模はそれほど多くないとのこと、助かりました。
ポインタでint/longを使っているところ
(つまり int *pt など?)
を調べて、、、演算していたらint64とかに変更すればよいのですね?
その場合、桁を越えそうに無いところは変更しなくてもいいのですよね?
No.1
- 回答日時:
ポインタやintが32ビットだと想定して書かれている部分さえ無ければ、API関数の呼び出しを64ビット版の呼び出しに書き換えてリコンパイルするだけで済む筈です。
まったくの蛇足ですが、似てるコールサインの知り合いが居て、知り合いかと思ってちょっとビックリしました(良く見たら最後の1文字が違ってた。当方、8エリアのフロリダコールでした。局免を流してしまって10年経ちますが)
chie65535さん、ありがとうございます。
特に32ビットを想定して作っていないのでよくわからないのです。
API関数の呼び出しを書き換えるってことは
書き換えれば、vc6.0でもコンパイルできるということでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- Excel(エクセル) Excel 2019 32-bit版を64-bit版にするには? 8 2023/07/28 14:20
- 英語 英文和訳についての質問です。 2 2023/06/23 06:38
- その他(プログラミング・Web制作) Visual Studio Code 関数の使い方について 3 2023/05/31 13:15
- CPU・メモリ・マザーボード BIOS画面で固まる(メーカーロゴの画面) 4 2022/08/03 17:41
- 英語 わからない英文があります。 4 2022/11/16 07:25
- Windows 7 Windows 11へアップグレードする時の方法 7 2023/01/17 23:31
- TOEFL・TOEIC・英語検定 bitとlittleは両方ともに同じ 1 2022/08/10 13:03
- その他(Microsoft Office) 折れ線グラフ、同じ項目の色 4 2022/12/23 15:46
- スピーカー・コンポ・ステレオ DAC[について・・・ 1 2022/08/29 11:44
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
64bit対応
C言語・C++・C#
-
C言語32bitから64bitの移行について
C言語・C++・C#
-
64ビットと32ビットの違い
C言語・C++・C#
-
-
4
【VC++】'X86' と 'x64'が競合
IT・エンジニアリング
-
5
画面を強制的に再描画させる方法
C言語・C++・C#
-
6
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
7
Cで作成したDLL関数をVBから呼び 引数渡し方法
Visual Basic(VBA)
-
8
SIDとSERVICE_NAMEの違いとは?
Oracle
-
9
64bit → 32bit型へのキャスト
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
init関数の意味
-
別のDLLのダイアログを・・・
-
関数ポインタの利点
-
LPSTR型の初期化について
-
デバイスハンドルとは?
-
C言語のポインタに直接アドレス...
-
Run-Time Check Failure #3とい...
-
セグメントエラー
-
参照型で受け取った引数をポイ...
-
C言語でのconstを返す関数
-
C++で関数ポインタから関数名を...
-
戻り値で構造体を返すことは可...
-
CObArrayとCPtrArrayの違い
-
アプリを32bitから64bit移行
-
単方向リスト
-
C++ Builderでのnewコマンドに...
-
構造体とfscanf
-
printfとscanfの違いって・・・
-
構造体の削除について
-
^と*の違いについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
fopne で失敗する原因
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
LPSTR型の初期化について
-
Cで作成したDLL関数をVBから呼...
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
構造体とfscanf
-
c言語で任意のファイルから読み...
-
デバイスハンドルとは?
-
main(int argc,char **argv[])...
-
基本アルゴリズムの『返す』の...
-
コンストラクタでnewを失敗した...
-
C言語の関数と配列に関する質問
-
参照型で受け取った引数をポイ...
-
ハンドル、アドレス、ポインタ...
-
DLL<->VB間での受け渡し(文字...
おすすめ情報