1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > error LNK: unresolved external symbol _main referenced in function ___tmainCRTStartup

error LNK: unresolved external symbol _main referenced in function ___tmainCRTStartup

时间:2023-11-11 01:15:21

相关推荐

error LNK: unresolved external symbol _main referenced in function ___tmainCRTStartup

编译一段程序时,出现连接器错误:

error LNK: unresolved external symbol _main referenced in function ___tmainCRTStartup

该程序大致如下:

VisualStudio 10.0

properies | general | character set : "Use Unicode Character Set"

properies | linker | system : "Console (SUBSYSTEM:CONSOLE)"

namespace mystock{const int .....;const wchar_t* const .....;class .......{};class .......{};.......int _cdecl wmain(int argc, wchar_t* argv[]){......;......;}} // namespace mystock

为什么?我的main函数看起来没错啊?

对于CRT在什么情况下会要求什么样的main函数,相信读者很清楚。可这次的问题从未遇到过。

干想了二十分钟,终于想起来了。或者说是蒙对了,其实心里仍然不很清楚。

我注意到了连接器想要的是“_main”,为什么有“_”?即使是向导生成的_tmain,在宏展开后也是main或者wmain啊?

自动加下划线,不是C编译器对cdecl的修饰规则吗?对了,难道是因为我把wmain放到一个namespace里,就怎么怎么着了?

那就咬牙试一试:

extern "C" int _cdecl wmain(int argc, wchar_t* argv[]){ ......

连接器错误消失。

如果读者你,恰好也遇到类似问题,希望这篇文章有所帮助。

如果你知道的更详细,请回复指导:

1,为什么main函数放到namespace里就必须要extern "C"了?

2,main不放到namespace里,但是在.cpp文件里,在编译器默认设置的情况下,难道就是extern "C"了?不应该啊。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。