2011年3月31日

Visual StudioにDLLをコピペする際の注意点

64bit版Windows 7において、Visual Studio上にSystem32のDLLをコピペすると32bit版のDLLがペーストされる問題があった。わかってから考えると当然かとは思うものの結構ハマったのでメモ。

まず以下のように64bit版Windows 7のC:\Windows\System32からmsvcp100.dllおよびmsvcr100.dllをコピーし、

image

Visual Studioのプロジェクトにペーストする。

image

そして、プロジェクトのディレクトリを見てみると、

image

明らかにファイルサイズが違う。。。(msvcp100.dllだと594KB→412KB)

念のためdumpbin /headersしてみると以下のようにx86のDLLだということがわかる。

image

こんな動作をする原因は、使っているVisual Studio 2010が32bit版なのでSystem32のパスからファイルをコピーしようとすると64bit版Windowsの機能で勝手にSysWoW64に読み替えるためである。

そこで、64bit版のDLLをコピペするためには

  1. プロジェクトのディレクトリに、エクスプローラ上でDLLをコピー
  2. Visual Studioから既存の項目としてコピーしたDLLを追加する

といった手順を踏む必要がある。

0 件のコメント:

コメントを投稿