VC6のプロジェクトをVC2008でビルド

解決


じん  2011-10-18 15:05:56  No: 72960  IP: [192.*.*.*]

VC6で作成されたプロジェクトを2008に移行する場合、いくつかエラーとなり、2008用に修正すればビルドが問題なく通るようになります。

2008でVC6のプロジェクトを立ち上げ時に警告で
「'○○○'という名前のVisual C++プロジェクトは、現在の形式ですでに存在しています。代わりに既存のプロジェクトを読み込みますか?」
と出ます。
これを「はい」と選択した場合、そのまま立ち上がり、ビルドが通ります。
これはようするにVC6のままの状態でビルドができていることになるのでしょうか?
※いいえを選択した場合変換しますかと聞かれます。
  変換した場合ビルドはもちろん通りません。
移行しないという選択肢の場合、これでOKなのでしょうか?
それとも2008とは別にVC6を入れて、VC6でコンパイルするべきでしょうか?

よろしくお願いします。

編集 削除
gak  2011-10-18 18:26:45  No: 72961  IP: [192.*.*.*]

> 2008でVC6のプロジェクトを立ち上げ時に
この時.dswファイルを開いて立ち上げてる?
> 「'○○○'という名前のVisual C++プロジェクトは、現在の形式ですでに存在しています。代わりに既存のプロジェクトを読み込みますか?」
もしそうならば↑は↓のように翻訳できるのではなかろうか。

「'○○○'という名前のVisual C++6.0プロジェクトは前回起動時に既にVC++10に変換されています。
今回.slnファイルではなく.dswファイルを再度開かれましたが前回変換済みの既存(VC10)プロジェクトを開くという事で良いですか?」

> これはようするにVC6のままの状態でビルドができていることになるのでしょうか?
VC2008に変換したプロジェクトのビルドができたという事ではなかろうか。

ちなみに「なかろうか、なかろうか」言ってるのは回答に余り自信が無いから…VC2008手元に無いので想像回答です。

編集 削除
じん  2011-10-19 11:18:54  No: 72962  IP: [192.*.*.*]

VC2008でdswファイルで立ち上げています。
疑問なのは、2008形式であれば、ソースを変更しないとエラーになるような気がします。
Dswで立ち上げて「はい」と選択し、ビルドを行うとエラーにはなりません。

> VC2008に変換したプロジェクトのビルドができたという事では
変換後ではエラーになってしまうのではないでしょうか?
と思いますが、そこがよくわかりません。

編集 削除
ryo  2011-10-19 12:17:19  No: 72963  IP: [192.*.*.*]

>疑問なのは、2008形式であれば、ソースを変更しないとエラーになるような気がします。
「気がします」とは?

エラーが出るならそのエラー内容、および、
ビルドが通るための変更内容について提示できますでしょうか?

編集 削除
tetrapod  2011-10-19 12:33:36  No: 72964  IP: [192.*.*.*]

# 結局のところ何かを変換/修正したのかしてないのか理解不能なのだが、

VS2008 しか入っていないマシンで VC++6 でのコンパイルがなされることは無い。
> 疑問なのは、2008形式であれば、ソースを変更しないとエラーになるような気がします。
VC++6 の時に VS2008 完全互換なコードを書いていればエラーにはならない。
ウチでも *.c, *.cpp, *.h など「ソース」を一切修正しないで
VS2005 と VC++6 で共通に使えているプロジェクトは存在するよ。
( *.dsw, *.vsproj は当然ながら非互換)

> 移行しないという選択肢の場合、これでOKなのでしょうか?
「移行しない」とは VC++6 のままコンパイルしたい、ということであるなら、
当然ながら× VS2008 でコンパイルされている。

VS2005 以後は C-Runtime Library が SxS 構成になっている関係で、
MSVCP80.dll など SxS 対象の DLL は「インストール」しないといけなくなった。
単純にコピーしても動作しない。

編集 削除
ryo  2011-10-19 12:49:26  No: 72965  IP: [192.*.*.*]

なんとなく

dswは、プロジェクトの「ファイルヘッダー部分」みたいなものです。
プロジェクトの本体は、2008用にすでに変換済みであり
dswファイルが残っているだけで
もう「VC6のプロジェクト」はどこにも存在してません。

なので、dswから起動しても
「再度変換しようとしてるようですが、既に変換済みだから、
  '変換済み’のものを読みますか?」となる
この際、「はい」をおせば、変換済みのvc2008のものが読み込まれます
また、「いいえ」をおして、再度変換を指定して場合、
変換結果は表示されない(変換してないので)


プロジェクトの変換のときに説明に
「旧バージョンのVisualStudioでは編集できません」とあり
ここで、一度でも変換したら
二度とVC6のプロジェクトとしては扱えなくなるということが分かります

編集 削除
じん  2011-10-19 14:32:39  No: 72966  IP: [192.*.*.*]

よくわかりました。
VC6のプロジェクトが残っていたため、すでにある2008を使用するかどうかの問いかけだったようです。
なので「はい」選択した場合は2008のビルドとなり、それが問題ないというのはすでに2008形式にコードも変換してあったということになります。
VC6のDswが単に残ってしまっているだけでした。
それに気付きましたので、解決とします。

みなさん、アドバイスありがとうございました。

編集 削除