トップ回答者
PlatformSDK(WindowsSDK)とVS2008について

質問
-
お世話になります。
VS2008をインストールすると、次の2つのバージョンのPlatfromSDK(WinSDK)も一緒にインストールされます.
既定の場合、c:\program files\microsoft sdks\windowsフォルダに
・v5.0
・v6.0Av5.0のフォルダのlibフォルダには、IA64のフォルダがあり、x64(or amd64)またはが見つかりません。
v6.0Aのライブラリフォルダには、x64フォルダがあります。それで、v5.0のライブラリは、下記のフォルダにあるものと思っているのですが・・・
C:\Program Files\Microsoft Visual Studio 9.0\vc\lib
間違っていないでしょうか。
また、
C:\Program Files\Microsoft Visual Studio 9.0\vc\lib\amd64のフォルダ名は、x64と同じこと指してしているのでしょうか。
教えてください。
回答
-
これまでの話を見ていて感じたのですが、そもそもVisualStudio2008でsdk V5.0を使う事自体は
OKなのでしょうか?その部分の確認が取れていて使われているのであれば杞憂だと思うのですが、
確認が取れていない場合にそもそも使う事は出来ないと言う事は考えられませんか?sdkの方が開発環境よりも古い状態なのでもしかすると新しいIDEとの組み合わせは出来ないのでは
ないかと感じています。特に新しいIDEに付属しているランタイム系のライブラリとぶつかったりはしないのか
と言う点が気になります。古いsdkで参照しているランタイムと新しいIDEで既定になっているランタイムの間で
食い違い等があるとうまく行かない気がします。使えて当然の状態で使え無いのであれば問題ですが、使えない状況なのであればなんとかしようとする事自体が無理と言うことも有りそうに思うのですが。
解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。- 回答としてマーク TAKAKUN 2010年8月4日 1:03
-
将来のために、VC6からVS2008へプロジェクトを移植中なのですが、
まずはコンパイルを通すことを目的にしており、VS2008と同時にインストールされた、
c:\program files\microsoft sdks\windowsv5.0 へパスを通すとコンパイルが通ったものですから、
安心していたのですが、よくみるとそのフォルダにはライブラリファイルがなかったため、
どこにあるのだろうかと、質問させていただいたわけです。インストールされるかもしれませんが、本来の組み合わせではないと推測されます。
lib フォルダに求めるものがないこと、v6.0A がメインとなっていることから容易に推測できると思います。なお、v5.0 に対応する SDK が何かはわかりません。
少なくとも、Windows SDK for Vista よりも前ですが、Windows Server 2003 R2 Platform SDK のインストールパスは違うようですから、特定ができていません。CDispatchが定義されていないということらしいのですが、V5.0では、
IStringList : public IDispatch
となっており、コンパイルがとおるのです。Visual C++ 2008 付属の v6.0A でも、IDispatch のようですよ。
v6.1 のパスを参照されているようですが、v6.0A を参照してみてはいかがでしょうか。# なぜ、v6.0 をすっ飛ばして、v5.0 にいっているのかが不思議。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 回答としてマーク TAKAKUN 2010年8月4日 1:03
すべての返信
-
それで、v5.0のライブラリは、下記のフォルダにあるものと思っているのですが・・・
C:\Program Files\Microsoft Visual Studio 9.0\vc\lib
間違っていないでしょうか。そのフォルダにあるのは、VC 関連の lib だけです。
Platform SDK / Windows SDK の lib はそのフォルダにはありません。ところで、なぜ、5.0 のフォルダを気にしているのでしょうか。
Visual Studio 2008 とセットでインストールされるライブラリでメインとなるのは、6.0 のはずです。また、
C:\Program Files\Microsoft Visual Studio 9.0\vc\lib\amd64のフォルダ名は、x64と同じこと指してしているのでしょうか。
教えてください。AMD64 で検索して出てくるサイトをいくつかみれば、x64 との関連性がわかりませんか?
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。 -
ご返事ありがとうございます。
ところで、なぜ、5.0 のフォルダを気にしているのでしょうか。
Visual Studio 2008 とセットでインストールされるライブラリでメインとなるのは、6.0 のはずです。
コンパイルが通らないことが、理由の一つにあります。
将来のために、VC6からVS2008へプロジェクトを移植中なのですが、
まずはコンパイルを通すことを目的にしており、VS2008と同時にインストールされた、
c:\program files\microsoft sdks\windowsv5.0 へパスを通すとコンパイルが通ったものですから、
安心していたのですが、よくみるとそのフォルダにはライブラリファイルがなかったため、
どこにあるのだろうかと、質問させていただいたわけです。コンパイルエラーとなる一つが、
エラー 2 error C2504: 'CDispatch' : 定義されていない基本クラスが宣言されています。 C:\Program Files\Microsoft SDKs\Windows\v6.1\include\asptlb.h 231 MyApp
その個所は、下記のように定義されており、
IStringList : public CDispatchCDispatchが定義されていないということらしいのですが、V5.0では、
IStringList : public IDispatch
となっており、コンパイルがとおるのです。
sdk7.0で、IDispatchに修正されているということなので、それも試すつもりではいるのですが、まずは5.0でコンパイルしたいと考えております。
-
これまでの話を見ていて感じたのですが、そもそもVisualStudio2008でsdk V5.0を使う事自体は
OKなのでしょうか?その部分の確認が取れていて使われているのであれば杞憂だと思うのですが、
確認が取れていない場合にそもそも使う事は出来ないと言う事は考えられませんか?sdkの方が開発環境よりも古い状態なのでもしかすると新しいIDEとの組み合わせは出来ないのでは
ないかと感じています。特に新しいIDEに付属しているランタイム系のライブラリとぶつかったりはしないのか
と言う点が気になります。古いsdkで参照しているランタイムと新しいIDEで既定になっているランタイムの間で
食い違い等があるとうまく行かない気がします。使えて当然の状態で使え無いのであれば問題ですが、使えない状況なのであればなんとかしようとする事自体が無理と言うことも有りそうに思うのですが。
解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。- 回答としてマーク TAKAKUN 2010年8月4日 1:03
-
将来のために、VC6からVS2008へプロジェクトを移植中なのですが、
まずはコンパイルを通すことを目的にしており、VS2008と同時にインストールされた、
c:\program files\microsoft sdks\windowsv5.0 へパスを通すとコンパイルが通ったものですから、
安心していたのですが、よくみるとそのフォルダにはライブラリファイルがなかったため、
どこにあるのだろうかと、質問させていただいたわけです。インストールされるかもしれませんが、本来の組み合わせではないと推測されます。
lib フォルダに求めるものがないこと、v6.0A がメインとなっていることから容易に推測できると思います。なお、v5.0 に対応する SDK が何かはわかりません。
少なくとも、Windows SDK for Vista よりも前ですが、Windows Server 2003 R2 Platform SDK のインストールパスは違うようですから、特定ができていません。CDispatchが定義されていないということらしいのですが、V5.0では、
IStringList : public IDispatch
となっており、コンパイルがとおるのです。Visual C++ 2008 付属の v6.0A でも、IDispatch のようですよ。
v6.1 のパスを参照されているようですが、v6.0A を参照してみてはいかがでしょうか。# なぜ、v6.0 をすっ飛ばして、v5.0 にいっているのかが不思議。
質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。- 回答としてマーク TAKAKUN 2010年8月4日 1:03
-
ご返事ありがとうございます。
vsvars32.batをみてみると、$(WindowsSdkDir)の環境変数は、6.0Aを指しており
$(WindowsSdkDirIA64)のパスは、Microsoft SDKs\Windows\v5.0\Lib\IA64
を指していることがわかりました。v5.0のフォルダは、IA向けにモジュールを生成するためにできたフォルダみたいですね。
Microsoft Platform SDK - February 2003 Edition =5.0と思っていたもので・・・
v5.0のフォルダがあるから、いけると思っていしまったのが問題だったと思われます。あと、6.1をアンインストールしたらビルド通りました・・・
ありがとうございました。