2008-10-01 12 views
8

ドライバーがたくさんあります。&有名なアプリケーションで、64ビットでは利用できません。 Adobeは、Internet Explorer用の64ビットFlash Playerプラグインを提供していません。そのため、私が64ビットVistaを実行しているにもかかわらず、私は32ビットIEを実行する必要があります。 Microsoft Office、Visual Studioも64ビットAFAIKには含まれていません。64ビット版のバイナリをビルドするのはどうですか?

個人的には、私のアプリケーションを64ビットで構築するのに大きな問題はありませんでした。いくつかの経験則を覚えておく必要があります。文字列の長さなどには常にUINT32の代わりにSIZE_Tを使用してください。

私の質問は、64ビット用のビルドを妨げているのでしょうか?

答えて

2

私はちょうど推測ですが、私はそれが大部分をサポートしていると思います。Adobeが64ビット版をコンパイルすると、サポートする必要があります。単純なコンパイルスイッチであっても、多くのテストなどを実行してからサポートスタッフが適切に対応するようにトレーニングする必要があります。問題を解決したときに新しいバージョンの32ビットのバイナリやコード内の分岐などがあります。したがって、単純なように見えますが、大きなアプリケーションでは、コストがかかることがあります。

0

彼らのLinux/Flash blogはまだ64bit Flash Playerがない理由を説明する方法があります。 Linux特有のものもあれば、Linux特有のものもあれば、

+0

ActionScriptのJITエンジンとガベージコレクションの64ビット版、下 サポートジェットを要約するする予定はありません。 –

+0

2年前のことですが、私はそれがそれほど難しいとは買っていません。 – stimms

+0

あなたが私に尋ねると、彼らはそれを解放しようとしています。私はCS4と同じ時期に出てくるお金を入れた。遅くともCS5。 – Oli

0

主にサポートとQAの問題です。 64ビット用に構築するエンジニアリング作業はほとんどのコードでは簡単ですが、テスト作業とサポートコストは同じように縮小されません。

テスト側では、同じテストを実行する必要がありますが、「合格」を知っていてもテストを実行する必要があります。

多くのアプリケーションでは、64ビットメモリモデルに変換することは実際には効果がありません(数GBのRAMを必要としないため)。実際には、ポインタのサイズ(すべてのオブジェクトフィールドを2倍の大きさにします)。

(鶏肉/卵の問題のために)需要の欠如に加えて、なぜそれがほとんどの開発者にとって価値がないのかを知ることができます。

15

初心者であれば、64ビットプログラミングはそれほど難しくありません。しかし、あなたが言及しているすべてのプログラムは新しいものではありません。

64ビットアプリケーションを既存のコードベースから移植するのではなく、最初から構築するほうがずっと簡単です。移植の際には、特に最適化が行われているアプリケーションに慣れ親しんだときに、多くの問題があります。プログラマはスピードを上げるために多くの小さな仮定を使用していますが、これらは64ビットへの移植が容易ではありません。私が対処しなければならなかったいくつかの例:

  • 構造体内の要素の適切な配置。データサイズが変更されると、構造体の特定のフィールドが最適なメモリ境界に揃うという前提が失敗する可能性があります。
  • 長さがlongの整数の場合、64ビットでない可能性がある別のプログラム書かれたコードは、同社が
  • 基礎となるライブラリをデバッグするために少しトリッキーになって残っているの第一人者も解読するのは難しいが、また、適切に64ビットサポートを持っている必要がありますよう、あなたは、
  • ポインタの長さの変化をあなたのコードをリファクタリングする必要がありますリンク。これは、オープンソースではないライブラリを使用する場合、移植コードの問題の大きな部分です。
+0

LLP64プログラミングモデル(x64上のMicrosoft Windowsなど)を使用するプラットフォームには、64ビット長整数がありません。 – bk1e

1

コンパイラのスイッチを反転するだけでは簡単ではありません。少なくとも、あなたが正しいことをしたいのではない。最も明白な例は、64ビットのデータ型を使用してすべてのポインタを宣言する必要があるということです。これらのポインタのサイズ(たとえばポインタあたり4バイトのメモリを割り当てるデータ型)について仮定するコードがあれば、それを変更する必要があります。これはすべてあなたが使っているライブラリでも必要です。さらに、あなたがほんの少数しか欠けていれば、ポインタはダウンキャストされ、間違った場所で終わるでしょう。ポインタは唯一の粘着点ではありませんが、確かに最も明白です。

+0

まあ、時々私は本当に幸運にも私が(ab)Javaを使うことに決めたと感じています... * scnr ;-) – Georgi

5

@jvasak's postで物事に加えて、することができますが、バグ原因の主要なもの:

  • ポインタはint型よりも大きい - コードの膨大な量は、サイズが同じであることを仮定します。

非常に多くあるため、彼らは特別に"LARGE_ADDRESS_AWARE"としてマークされていない限り、Windowsがさえ0x7FFFFFFFで(2GB以上)上記のアドレスを持っているポインタを処理するために(32ビットまたは64ビットかどうか)アプリケーションを許可しないことを覚えておいてくださいアプリケーションはある時点でポインタを負の値として扱い、落ちます。

3

多くの企業が64ビット版を作成していないもう一つの理由は、単純に必要ないことです。

WindowsにはWoW64(Windowsでは64ビットWindows)、Linuxでは32ビットライブラリを64ビットと一緒に使用できます。これらの両方により、64ビット環境で32ビットアプリケーションを実行できます。

ソフトウェアがこのように実行できる限り、64ビットに変換する大きなインセンティブはありません。それらはオペレーティングシステムとのより深いに結びついているとするx86-64/AMD64ベースの64ビット・オペレーティング・システムが提供する32ビットレイヤで実行することができないとして、これに

例外は、デバイス・ドライバなどの事です(IA64はすることができません私が理解していることからこれを行う)。

私はあなたに同意しますが、Adobeはこの製品を更新していないと非常に失望しています。あなたが指摘したように、64ビットでは正しく動作せず、Internet Explorerの32ビット版を実行する必要があります。

私は、アドビの戦略上の間違いだと思います。フラッシュプレーヤー用の32ビットブラウザを実行しなければならないことは、ユーザーにとっては不便であり、多くはこの解決策を理解できません。これは、開発者がフラッシュを使用することを懸念している可能性があります。ウェブサイトにとって最も重要なことは、誰もがそれを見ることができるようにすることです。ユーザーを疎外させる解決策は一般的に人気がありません。 Flashの人気は、人気が高まり、それを使用するサイトが増えるほど、システムで利用したユーザーが増え、利用者が増えれば増えるほどサイトを使用する意欲が高まりました。

一般的な消費者が新しいコンピュータを購入したときに、彼らがそれを聞いているかのいずれかを得ようとしている64ビットOSを必要としないことを知りません最新かつ最高のもの、コンピューティングの未来、あるいは単に彼らがその違いを知らないからです。

Vistaは約2年前から出荷されていましたが、Windows XP 64ビット版はそれ以前にリリースされました。私の考えでは、Flashのような主要な技術が市場に持ちこたえたいのであれば、アップグレードするのは時間がかかりすぎる。AdobeがMacromediaを買収したことと関係している可能性があります。これはAdobeがFlashの未来の一部ではないと感じていることを示すものです。FlashとDreamweaverがMacromediaしかし、なぜ彼らはまだそれを更新していないのですか?

4

私がC/C++コードを64ビットに移植する際に直面した最大の課題は、サードパーティライブラリのサポートです。例えば。現時点では32ビット版のLotus Notes APIとMAPIしか存在しないため、リンクさえできません。

また、64ビットプロセスに32ビットDLLをロードすることができないため、物事を動的に読み込もうとすると再び焼けてしまいます。 64ビット環境でMicrosoft Accessをサポートしようとすると、この問題が再び発生しました。ウィキペディアから:

近い将来、Jetデータベースエンジンは、32ビットのままです( )。 マイクロソフトは、ネイティブのWindows

関連する問題