当项目名称有连字符时,为什么VS 2010 ATL简单对象向导不生成.cpp / .h文件?

时间:2013-03-04 23:07:12

标签: visual-studio-2010 atl wizard

这是Visual Studio项目命名的问题和“单挑”。

我正在VS 2010中构建一个ATL / COM项目,当我运行添加 - >类 - >用于创建类Foo的ATL Simple Object 向导,仅创建了Foo.rgs文件,并且未显示预期的Foo.cpp和Foo.h文件。

在尝试使向导工作(检查了不同的选项等)的几个变体之后,我仍然没有成功。没有错误消息,没有迹象表明输出中的“无源文件”之外的某些内容已失败。

在尝试找到“为什么会这样”的答案的过程中,我碰到提到需要使用ProjectName.ClassName手动填写ProgID字段以用于项目和类。当我试图输入项目名称(Some-Project)时,向导抱怨连字符是该字段中的“非法字符”。

网上搜索和“为什么ATL向导不生成文件”搜索的变体在这里也是空的。

因此,猜测ProgID字段中的“没有破折号”可能会产生进一步的影响,我开始着手更改项目名称中的所有破折号,文件名,目录名等等,以便查看会产生什么影响有。 “Some-Project”在整个项目中变为“Some_Project”,“Random-Module。*”变为“Random_Module。*”。

将所有短划线/连字符转换为下划线,向导正确运行,并且所有预期的文件都神奇地出现,并包含所有必需的COM / ATL管道内容。

所以。 。

1)任何想法为什么在名称中使用破折号的项目是“合法的”,但破折号打破了向导?

2)无论是什么原因,我建议不要在Visual Studio项目名称中使用短划线/连字符。

1 个答案:

答案 0 :(得分:1)

因为向导使用包含项目名称的c和c ++预处理指令(宏)来生成新文件和代码,并在现有文件中生成代码,并且因为这些预处理指令无法正确理解其名称中的连字符。请参阅关于c / c ++宏的标准,但请记住您已经看过的所有宏:有很多下划线“_”来分隔名称,但没有连字符。