最近在vs2010写测试程序,编译时发现一个非常诡异的问题。
编译时有时候提示:error LNK2001: 无法解析的外部符号 _main错误。
有时候则提示 error LNK2001: 无法解析的外部符号 _test_msgqueue (test_msgqueue函数是我在一个c文件中定义的一个函数)
开始找原因
.........
折磨了一天终于找到,应该记下来。
原来我创建的控制台程序名称为acl_unit_test 默认main函数生成在 acl_unit_test.cpp中,而我增加的单元测试函数test_msgqueue被我放在创建的c文件 acl_unit_test.c中。
猜测应该是vs2010认为main函数应该存在于与工程同名的c或者cpp文件中,我这边增加了与工程名同名的c文件,结果工程指导编译器在我这个c文件中找main,找不到就犯二啦。
解决办法:把我的acl_unit_test,.c改个名acl_unittest,.c 问题解决。这算是vs的bug吗。