問題タブ [32bit-64bit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
windows - オブジェクト ポインタを格納するための GWL_USERDATA の代替手段は何ですか?
私が取り組んでいる Windows アプリケーションには、Win32 のすぐ上にあるカスタム フレームワークがあります (聞かないでください)。ウィンドウを作成するとき、通常は をthis
介してウィンドウのユーザー データ領域に配置しますSetWindowLong(hwnd, GWL_USERDATA, this)
。これにより、MFC のようなコールバックまたは緊密に統合された を使用できますWndProc
。問題は、LONG は 32 ビット幅しかないため、これが 64 ビット Windows では機能しないことです。32 ビット システムと 64 ビット システムの両方で機能する、この問題に対するより良い解決策は何ですか?
language-agnostic - 32 ビットと 64 ビットの両方に互換性のあるコードをどのように記述しますか?
コードを 32 ビットと 64 ビットの両方のプラットフォームで正しく実行するには、どのような考慮事項が必要ですか?
編集:文字列/文字の印刷や構造の使用など、どのような領域に注意する必要がありますか?
linux - 特定の Linux が 32 ビットか 64 ビットかを判別する方法は?
と入力するuname -a
と、次の出力が得られます。
このことから、指定された OS が 32 ビットまたは 64 ビットであることをどのように知ることができますか?
これは、スクリプトを作成する場合に便利ですconfigure
。たとえば、どのアーキテクチャ用に構築しているか?
windows-vista - Windows Vista 64 ビットが既定で 32 ビットの cmd.exe を使用するのはなぜですか? (マシン固有)
状況:
現在の開発環境を Windows XP 32 ビットから Windows Vista 64 ビット (*) に変換する必要があります。当然のことながら、私たちのビルド システムでは、ハードコーディングされたパスに問題がある箇所がたくさんありました (例: " C:\Program Files
" が " " になるC:\Program Files (x86)
)。幸いなこと%ProgramFiles%
に、ソース プロセス (32 ビットまたは 64 ビット) に基づいて適切なディレクトリにマップされる環境変数があります。そこで、ビルド スクリプトを で更新しました%ProgramFiles%
が、これで終わりだと確信していました。
ビルド環境は、コマンドライン ( C:\Windows\System32\cmd.exe
) から呼び出されます。
問題:
1 つの特定のマシン (つまり、作業中の開発マシン) で、実際には 32 ビット プロセスであることが判明したC:\Windows\System32\cmd.exe
ため、スクリプトはディレクトリのx86
バージョンを検出し、すべてがうまく機能します。Program Files
私が見つけることができる他のすべての 64 ビット マシン (自宅のマシンを含む) では、C:\Windows\System32\cmd.exe
が 64 ビット バージョンで、32 ビット バージョンがC:\Windows\SysWow64\cmd.exe
. そのため、ビルド スクリプトは探しているものを見つけることができず、失敗します。
32bitcmd.exe
が必要な場合は明示的に呼び出す必要があり、デフォルトでは 64bit を取得する必要があることを理解しましたcmd.exe
。~の典型的なWORKSFORME
ケース
問題は、これが正しくないマシンに何が起こったのかということです。cmd.exe
あるマシンではデフォルトで32 ビットになっているのに、他のマシンではそうではないのはなぜですか? C:\Windows\System32\cmd.exe
いずれの場合も、メニューから明示的に実行していますが、1 台のマシンでのみStart|Run
異なる結果が得られます。すべてが同じエディションの Vista 64 ビットを実行しています。
考えや洞察はありますか?
(*) 私がこれをしなければならないことを受け入れてください。なぜ私がこれを行っているのかを言う自由はありません。OS とすべてを最初から再インストールすればおそらくうまくいくでしょうが、それは確かにやり過ぎです。さらに、Vista マシンを配布するよう IT 部門を説得するのは非常に困難でした。
php - PHP の 32 ビットから 64 ビットの「落とし穴」
先週末、自分のウェブサイトのウェブホストを変更しました。私が使用していたホスト サーバーは 32 ビット OS で、移動先のホスト サーバーは 64 ビットでした。予期せず、一部の PHP スクリプトで誤った結果が返されるようになりました。
私の場合、 << および >> (ビットシフト) 操作が原因でした。結果を 0xFFFFFFFF でマスクする必要があり、結果が負の場合は以前と同じように機能するように変更しました。
私の PHP スクリプトには、探すべき問題が他にありませんか?
c - C で 32 ビット アプリケーションを 64 ビット アプリケーションに変換する
現在、C で 32 ビット アプリケーションを 64 ビット アプリケーションに変換する作業を行っています。このアプリケーションは、現在 x86 アーキテクチャ (Windows、osx、Unix、Linux) で作業しています。そのため、コーディングを開始する前に、アプリケーションを変換する際に何を考慮する必要があるかを知りたいと思いました。
c# - 64 ビット マシンで C# アプリケーションを 32 ビットとして実行する
アプリケーションを 64 ビット マシンで 32 ビットとして実行するにはどうすればよいですか?
コードは C# で記述されています。
windows - Windows DLL ファイルをテストして、それが 32 ビットか 64 ビットかを判断するにはどうすればよいですか?
特定のディレクトリ内のすべての DLL ファイルが特定のビルド タイプであることを確認するテスト スクリプトまたはプログラムを作成したいと考えています。
これを SDK のビルド プロセスの最後にサニティ チェックとして使用し、64 ビット バージョンに 32 ビット DLL ファイルが含まれていないことを確認します。
DLL ファイルを見て、そのタイプを判別する簡単な方法はありますか?
このソリューションは、xp32 と xp64 の両方で機能するはずです。
windows - プログラマーとして、64 ビット Windows に移行するときに何を心配する必要がありますか?
私の最近のプログラミングのほとんどは、C/C++/C#/VB6 を使用して 32 ビット Windows で行われています。最近、顧客から私のコードが 64 ビット Windows で動作するかどうか尋ねられます。
私が使用しているレガシー機能のうち、64 ビット Windows で壊れる可能性があるものは何ですか? 私が考え、心配する必要がある現実世界の問題は何ですか?
もちろん、コードを 64 ビット OS でテストしますが、探すべき一般的な問題を知りたいです。私は既存のバイナリに関心がありますが、(可能な場合) 再コンパイルするときに何を心配するかについてコメントを受け付けています。
編集: これは 64 ビット移植のバグの素晴らしいリストです。