お世話になります。
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以降でしか動作しないのでしょうか?
よろしくお願い致します。
前のバージョンがインストールされている場合で、かつ、
関数「????」が、最近追加されたものの場合、(DLLの)インストールに
失敗している可能性が考えられます。
旧バージョンを手動で完全に削除してから再インストールしてみてはどうでしょう。
また、DLLやEXEに問題がある場合には、DLLのアンロードに失敗している場合も
考えられ、手動で当該DLLが削除できないことで、それを確かめられます。
サポートは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までにするしかないでしょう。
仲澤@失業者さん、えーとさん、アドバイスありがとうございます。
確かにユーザーからの報告には「EncodePointer」が見つからないという
記述がありました。
VS2010ではWinXP(SP1)はサポートしていないんですね。
仕方がないのでソフトの動作対象を変更したいと思います。
貴重なアドバイスをありがとうございました。