2017-02-20 2 views
0

私のアプリケーションフォルダのサブフォルダからDLLをロードします。WindowsXP上のサブフォルダからLoadLibraryに失敗しました

m_handle = LoadLibraryEx(".\\myfolder\\my.dll", 0, LOAD_WITH_ALTERED_SEARCH_PATH); 

これは、Windows 7上で非常にうまく動作しますので、私はそれをロードするために、私は正しい方法を把握するために私には時間がかかる

はMyFolder/に依存するすべてのdllとmy.dllを置きます&以降。ただし、エラー998 ERROR_NOACCESS "メモリの場所へのアクセスが無効です"が返されます。Windows XPの場合。

しかしアプリケーションフォルダからこのDLLをロードする

PSのWindowsのすべてのバージョンで非常にうまく機能 :私はMYFOLDERしabsoulteと相対パスでSetDllDirectoryを使用しようとしましたが、は、Windows XP上でまだ成功

+0

Windows XPのサポートが長期間終了しました。なぜそれをサポートする必要があるのか​​についての具体的な理由は何ですか? – tambre

+0

それでも私の顧客の40%以上の大きなユーザーベースを持っています – Rem

+0

相対パスの使用はおそらく多くの場合問題の原因となる現在の作業ディレクトリに依存しています。 XPのLoadLibraryと組み合わせて、相対パスを扱わない可能性があります。代わりにフルパスでLoadLibraryを試しましたか?または、SetDllDirectoryをmyfolderのフルパスで使用し、LoadLibrary( "my.dll")を使用します。 – stijn

答えて

1

MSDNが、これはLOAD_WITH_ALTERED_SEARCH_PATHフラグについて言いたいことがあります。この値が使用されている場合

lpFileNameは、相対パスを指定し、 の動作は定義されていません

代替検索戦略を使用する必要がない場合は、フラグパラメータとして0を渡すことができます。このフラグが本当に必要な場合は、最初にGetFullPathNameを呼び出して絶対パスを取得する必要があります。

関連する問題