
いまさら、のしつこいような質問で゛申し訳ありません。
今だによくわかっていないので、教えてください。
今、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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
init関数の意味
-
関数へのポインタ渡し
-
教えてください2
-
fopne で失敗する原因
-
戻り値で構造体を返すことは可...
-
Run-Time Check Failure #3とい...
-
コンストラクタでnewを失敗した...
-
トリプルポインタが必須!とな...
-
c言語で任意のファイルから読み...
-
線形リストについて。
-
ExcelVBAでのkernel32(64bit)
-
ポインタの基礎について
-
Win32 APIウィンドウプロシージ...
-
"関数の中でnewで初期化したポ...
-
プーさんのマウスポインタを教...
-
C言語のポインタに直接アドレス...
-
C++のnew演算子について質問です。
-
2分探索木、挿入
-
UNIXプログラミング execに...
-
ポインタ変数のインクリメント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
セグメントエラー
-
C言語のポインタに直接アドレス...
-
init関数の意味
-
Run-Time Check Failure #3とい...
-
戻り値で構造体を返すことは可...
-
ExcelVBAでのkernel32(64bit)
-
アプリを32bitから64bit移行
-
参照型で受け取った引数をポイ...
-
fopne で失敗する原因
-
PASCALとFARの意味
-
LPSTR型の初期化について
-
CWnd::EnableWindow()の扱い方
-
ポインタについて
-
プーさんのマウスポインタを教...
-
連結リスト 要素の入れ替え
-
ハンドルはポインタか
-
C++で関数ポインタから関数名を...
-
自作DLLの引数について、ポイン...
-
NULLポインタが0でない処理系と...
-
TCHAR文字列内の検索について
おすすめ情報