2011-07-01 18 views
4

私はVisual Studio(Visual Studio 64 bit?)の64ビットバージョンがあるかどうかの質問に答えるのリンクを読んでいます。単純な答えはいいえですが、32ビットVisual Studio開発環境では64ビットの実行可能ファイルを生成できます。msvcr80.dllの64ビット版はありますか?そうでない場合は、どうしてですか?

質問

1)のMicrosoftの再配布可能なライブラリMSVCR80.DLLの64ビット版はありますか? Windows 7、64ビットマシンに再頒布可能パッケージをインストールし、winsxsサブディレクトリにあるすべてのコピー(すべて7件)は、ヘッダーセクションでは32ビットであることを示しています。

a)は、32ビットの実行可能ファイルは、64ビットのDLLをロードすることはできません。

2)は、それが本当のことではないですか?

b)64ビットの実行可能ファイルは32ビットのdllをロードできません。

c)msvcr80.dllのすべてのバージョンが真である場合は、32ビットで、それぞれのヘッダーセクションに示すように、Visual Studioでビルドされた64ビットアプリケーションは、どのようにこれは再配布可能ですか?

誰かがこのファイル(msvcr80.dll)の真の64ビット版を見つけた場合、つまりヘッダーセクションに実際に64ビットライブラリであることが示されているものがある場合は、リンク先を教えてください。

New: Added image of BeyondCompare Viewer to show contents of msvcr80.dll header section, indicating dll is targeted for 32 bit use...

+0

ここにループを閉じる - これを投稿して間もなく、再配布可能なMSの64ビットバージョンが_msvcr100.dll_であり、Microsoftの最新のSDKダウンロードに含まれていることがわかりました。 – ryyker

+0

no .... "msvcr80.dll"はVisual Studio 2005の(リリース)ランタイムです.WinsSxSディレクトリには32ビットが必要です。私は2005年に64ビットバージョンがあるのか​​どうかはわかりませんが、そうした場合はシステムディレクトリにあります。 "msvcr100.dll"は、Visual Studio 2010の(リリース)ランタイムです。また、WinSxSには32ビット、Systemディレクトリには64ビットが必要です。 –

+0

@MooingDuck - あなたのコメントに 'no ....'が何を言いましたか。私はmsvcr100.dllを使用しており、ダウンロード可能なMicrosoft Windows 7 SDKから入手しました。 Visual Studioなどの開発環境で配布されることに同意しますが、SDKでも利用できます。 (完全なMS Visual Studiosを持たずに必要な場合、64bit msvcrxxx.dllを入手できる場所を指摘するために、この記事を1時間ほど前に編集しました) – ryyker

答えて

6
向こうはそれが表示されているもののためのPEヘッダを使用していない比較

- それはバージョンのリソースを使っている、とx64のMSVCR80.DLLのためFILEOSバージョンリソースは、私がVOS_NT_WINDOWS64ありません知っている限り値VOS_NT_WINDOWS32を(持っています)。

dumpbin /headers(またはlink /dump /headers)を使用すると、PEヘッダーについての情報を得ることができます。あなたはx64のDLLは、以下の情報を持っていることがわかります:

FILE HEADER VALUES 
      8664 machine (x64) 
4

私はMSVCR80.DLLは、Visual Studio 2005、あなたのタグで示されているようではないのVisual Studio 2010用のCRTランタイムであることを指摘したいと思います。

winsxs amd64_xxxのdllはwin64 dllです。ここに私のシステム上のDLLのDUMPBINである:ここで

C:\Windows\winsxs\amd64_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1833_none_88de3f632fb047bc>dumpbin /headers msvcr80.dll Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file msvcr80.dll 

PE signature found 

File Type: DLL 

FILE HEADER VALUES 
      8664 machine (x64) 
       6 number of sections 
     482BAB54 time date stamp Thu May 15 15:17:40 2008 
       0 file pointer to symbol table 
       0 number of symbols 
       F0 size of optional header 
      2022 characteristics 
        Executable 
        Application can handle large (>2GB) addresses 
        DLL 

は、32bit版のDUMPBINです:

C:\Windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.1833_none_d08b763a442c70c2>dumpbin /headers msvcr80.dll 
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01 
Copyright (C) Microsoft Corporation. All rights reserved. 


Dump of file msvcr80.dll 

PE signature found 

File Type: DLL 

FILE HEADER VALUES 
      14C machine (x86) 
       5 number of sections 
     482BB294 time date stamp Thu May 15 15:48:36 2008 
       0 file pointer to symbol table 
       0 number of symbols 
       E0 size of optional header 
      2102 characteristics 
        Executable 
        32 bit word machine 
        DLL 

そして2への答えのため)

32ビットアプリケーションをロードすることはできません64ビットDLLと64ビットアプリケーションは32dllをロードできません。

詳細はMSDN 64bit Process Interoperabilityを参照してください。

1
  1. のVisual Studioの64ビット版はまだありません、すべてのVSは32ビットのみです。
  2. VSは、64ビットの実行可能ファイルをビルドおよびデバッグできます。
  3. OSが64ビットの場合、アプリケーションを実行するために64ビットのVCランタイムが必要なわけではありません。アプリケーションが32ビットの場合は、32ビットのランタイムが必要であり、64ビットのランタイムは必要ありません。アプリケーションが64ビットであれば、確かに64ビットのVCランタイムが必要です。
  4. VCランタイムは、バイナリ(VC8、VC9またはVC10)のビルドに使用したバージョンと一致する必要があります。また、サービスパックと一致する必要があります。
  5. 32ビットバイナリには4バイトのアドレス指定があり、32ビットプロセスで64ビットDLLをロードすることはできません。それはまったく逆です。
関連する問題