VS2010で作成したアプリがWinXP(SP1)で動作しません

[戻る]
MistyGreen 2010/11/07(日) 10:01:10
お世話になります。

VS2010 Proで開発を行っています。
自分のアプリは「MyApp.exe」と「MyApp.dll」から構成されています。
EXEの方はMFCを使用しており、DLLの方は使用していません。

動作対象のOSはWinXP以上としています。

開発環境をVS2005からVS2010に切り替えた後、ユーザーから以下のような報告がありま
した。

--------------------------------------------------------
会社のPCはWinXP(SP1)なのですが、旧バージョンは正常に使用できていたのですが、
新バージョンをインストールすると、「MyApp.exe - エントリ ポイントが見つかりま
せん。プロシージャエントリポイント「????」がダイナミックリンク
ライブラリ MyApp.dllから見つかりませんでした」
とダイアログがでて正常に動作しません。
--------------------------------------------------------

ちなみに、WinXP(SP2), WinVista, Win7 などでは問題なく動作しています。

EXEの方の「stdafx.h」では以下のように設定しています。

// WinXP以降のOSをサポートする...
#define WINVER  0x0501
#define _WIN32_WINNT 0x0501

また、DLLの方では、プロジェクトのプロパティの「プリプロセッサ」のところで、
以下のように設定しています。

WINVER=0x0501
_WIN32_WINNT=0x0501


何かコンパイル時の定数を変えればWinXP(SP1)でも動作させることができるのでしょう
か?
あるいは、VS2010で作成するアプリはWinXP SP2以降でしか動作しないのでしょうか?

よろしくお願い致します。

仲澤@失業者 2010/11/08(月) 14:17:14
前のバージョンがインストールされている場合で、かつ、
関数「????」が、最近追加されたものの場合、(DLLの)インストールに
失敗している可能性が考えられます。
旧バージョンを手動で完全に削除してから再インストールしてみてはどうでしょう。
また、DLLやEXEに問題がある場合には、DLLのアンロードに失敗している場合も
考えられ、手動で当該DLLが削除できないことで、それを確かめられます。

えーと 2010/11/08(月) 16:06:11
サポートはXPはSP2以降とあるので、SP1では動きません。
動かない理由に関しては、
http://recyclebin.jugem.jp/?eid=341
などを見てみると判ります。

Visual Studio2010で作成されたexeはある3つのAPIを呼んでいます。
これがWindows2000では無い為、動かないのです。

ここで、EncoderPointer/DecodePointerはヘルプで見てもらうと判りますが、
XP SP2以降とあるので、残念ながらVisual Studio2010ではSP1のモジュールは
標準では動きません。

もし、SP1でも動かしたいならVisual Studio2008までにするしかないでしょう。

MistyGreen 2010/11/08(月) 16:31:07
[[解決]]
仲澤@失業者さん、えーとさん、アドバイスありがとうございます。

確かにユーザーからの報告には「EncodePointer」が見つからないという
記述がありました。

VS2010ではWinXP(SP1)はサポートしていないんですね。
仕方がないのでソフトの動作対象を変更したいと思います。

貴重なアドバイスをありがとうございました。

古いスレッドには追加発言できません。