2016-10-05 1 views
-1

私はVisual studio 2005を使用しています。WINXPバージョンのpegrp32c.dllとWIN7バージョンのpegrp32d.dllを動的に読み込みたいとします。ターゲットバージョンがWINXPの場合iターゲットバージョンがWIN7の場合はpegrp32c.dllをロードします.thebはpegrp3d2.dllをロードします。これをどのように達成できますか?pegrp32c.dllとpegrp32d.dllが異なるタイプのウィンドウにロードされています

また、私は上記のサードパーティのdllについて言及していません。 誰かが上の言葉dllがWindowsの別のバージョンにdllの負荷差バージョンをどのようにexpalainしてください。

私はあなたが

答えて

0

さて、あなたは最初Version Helperの機能を使用して、現在のWindowsのバージョンを確認する必要が.thankので、いくつかの間違いをご検討ください、SOに質問をしてに新しいです。次に、LoadLibraryメソッドを使用してdllをロードします。あなたはWindows Vistaについて言及していないので、私はWindows XPのルールが適用されると考えています。

#include <versionhelper.h> 
///... 
HMODULE hLib = NULL; 
if(IsWindows7OrGreater()) 
{ 
    hLib = LoadLibrary(L"pegrp32d.dll"); 
}else 
{ 
    hLib = LoadLibrary(L"pegrp32c.dll"); 
} 

if(!hLib) 
    //report an error 

あなたはこのライブラリを静的にリンクしたい場合、あなたはあなたがにLIBファイルを選択するために、ターゲットプラットフォームと#pragma comment命令を決定するために、マクロWINVERを使用することができ、Windows XPおよびWindows 7用のアプリケーションの異なるバージョンを作成する必要がありますとのリンク。

#if WINVER >= _WIN32_WINNT_WIN7 
#pragma comment(lib, "pegrp32d.lib") 
#else 
#pragma comment(lib, "pegrp32c.lib") 
#endif 

参考文献:

MSDN Version helper API

MSDN WINVER macro

あなたは、Visual Studioの旧バージョンを使用する場合は、latestプラットフォームSDKをインストールするか、GetVersion API呼び出しを使用することができ、中で宣言windows.h。ただし、この方法はWindows 8.1以降は使用できないため、この方法は推奨されません。

+0

お返事ありがとうございました。 –

+0

VS2005でVersionHelpers.hを使用するにはVS2005では使用できませんが、 "VersionHelpers.h"を取得中です:このようなファイルまたはディレクトリはありません "エラー –

+0

最新のPlatform SDKをインストールするか、廃止予定の' GetVersion' API方法。 – Ari0nhh