64bit版Windows 7において、Visual Studio上にSystem32のDLLをコピペすると32bit版のDLLがペーストされる問題があった。わかってから考えると当然かとは思うものの結構ハマったのでメモ。
まず以下のように64bit版Windows 7のC:\Windows\System32からmsvcp100.dllおよびmsvcr100.dllをコピーし、
Visual Studioのプロジェクトにペーストする。
そして、プロジェクトのディレクトリを見てみると、
明らかにファイルサイズが違う。。。(msvcp100.dllだと594KB→412KB)
念のためdumpbin /headersしてみると以下のようにx86のDLLだということがわかる。
こんな動作をする原因は、使っているVisual Studio 2010が32bit版なのでSystem32のパスからファイルをコピーしようとすると64bit版Windowsの機能で勝手にSysWoW64に読み替えるためである。
そこで、64bit版のDLLをコピペするためには
- プロジェクトのディレクトリに、エクスプローラ上でDLLをコピー
- Visual Studioから既存の項目としてコピーしたDLLを追加する
といった手順を踏む必要がある。
0 件のコメント:
コメントを投稿