3

これは、Visual Studio プロジェクトの命名に関する質問であり、「警告」でもあります。

VS 2010 で ATL/COM プロジェクトを構築しています。 [追加] --> [クラス] --> [ATL シンプル オブジェクト] ウィザードを実行してクラス Foo を作成すると、Foo.rgs ファイルのみが作成され、予想される Foo.cpp Foo.h ファイルは表示されませんでした。

ウィザードを機能させるためのいくつかのバリエーション (さまざまなオプションをチェックするなど) を試みた後も、まだ成功しませんでした。エラーメッセージはなく、出力に「ソースファイルがありません」以外に何かが失敗したことを示すものはありませんでした。

「なぜそうなのか」に対する答えを見つけようとしているときに、問題のプロジェクトとクラスの ProjectName.ClassName を ProgID フィールドに手動で入力する必要があるという言及に出くわしました。プロジェクト名 (Some-Project) を入力しようとすると、ウィザードはハイフンがそのフィールドの「不正な文字」であると不平を言いました。

ここでの「ATLウィザードがファイルを生成しない理由」検索に関するWeb検索とバリエーションも空になりました。

したがって、ProgID フィールドの「ダッシュは許可されていません」がさらに影響を与える可能性があると推測し、プロジェクト名、ファイル名、ディレクトリ名などのすべてのダッシュをアンダースコアに変更して、それがどのような影響を与えるかを確認することにしました。"Some-Project" は "Some_Project" になり、"Random-Module.*" はプロジェクト全体で "Random_Module.*" になります。

すべてのダッシュ/ハイフンがアンダースコアに変換されると、ウィザードは正しく実行され、必要なすべての COM/ATL 配管要素が含まれた状態で、予想されるすべてのファイルが魔法のように表示されました。

そう 。. .

1)名前にダッシュを含むプロジェクトを使用することが「合法」である理由がわかりましたが、ダッシュはウィザードを壊しますか?

2) 理由が何であれ、Visual Studio プロジェクト名にダッシュ/ハイフンを使用しないことをお勧めします。

4

1 に答える 1

1

ウィザードは、プロジェクトの名前を含む c および c++ の前処理ディレクティブ (マクロ) を使用して、新しいファイルとコードを生成し、既存のファイルにコードを生成します。また、これらの前処理ディレクティブは名前のハイフンを正しく認識できないためです。これについては、c/c++ マクロに関する標準を参照してください。ただし、たとえば、既に見たすべてのマクロを思い出してください。名前を区切るためにアンダースコア「_」がたくさんありますが、ハイフンはありません。

于 2014-01-21T08:51:10.560 に答える