当前位置:C++技术网 > 资讯 > 切忌:不要在项目中随便将其他类型的文件转换成cpp文件

切忌:不要在项目中随便将其他类型的文件转换成cpp文件

更新时间:2015-12-07 11:22:01浏览次数:1+次

   今天在win32控制台项目中新建一个cpp文件(IDE是VS2010),在输入名字时多输了个点号,当时的名字是Char.ToOem,生成了一个Char.ToOem文件,类型是ToOem,当时没有把这个文件删了重建,而是直接重命名,改为了CharToOem.cpp,把程序写好后编译,发现出现了error LNK2001: 无法解析的外部符号 _mainCRTStartup。

   于是乎百度了一下:VC编译程序时过程是这样的,在编译控制台程序时编译器并不是从main函数开始执行,而是去找mainCRTStartup函数,mainCRTStartup函数做些工作,如把一个命令行的字符串拆分成几个字符串等工作,然后去mainCRTStartup再去调用main函数。你新建一个cpp文件就可以了,但是如果你建了cpp文件,但是没有main函数,那么就会提示无法解析的符号_main,已在mainCRTStartup中引用,其实就是main函数你没有定义,但是mainCRTStartup调用了它。而你的这个错误是没有找到mainCRTStartup函数,你只要新建一个cpp文件就可以了,系统会替你写mainCRTStartup函数的。

   后来自己想通了,新建cpp文件,编译器默认帮你加了mainCRTStartup函数(可能描叙不准确),但如果你是其他类型转到cpp类型,就会出现那个错误。

   接着我又尝试了一下其他方式,比如说新建一个txt,在项目中引入,再改成cpp文件,就会出现那个错误,但如果你是先将txt转换成cpp文件再引入到项目中,就不会出现这样的错误。

   大家如果遇到其他情况也可以一起来研究研究。