错误unresolved external symbol _main referenced in function "int _cdecl invovke _main(void)"

当出现这种错误时,你首先要做得是检查代码拼写错误 ,特别是字母拼写顺序错误、{ }不匹配,有很大概率是这种低级错误。接下来才考虑其它问题:

产生这个问题可能的原因
1, 你用vc建了一个控制台程序,它的入口函数应该是main, 而你使用了WinMain.
2. 你用vc打开了一个.c/.cpp 文件,然后直接编译这个文件,这个文件中使用了WinMian而不是main作为入口函数。vc这时的默认设置是针对控制台程序的。
解决方法
1).进入project->setting->c/c++, 在category中选择preprocessor,在processor definitions中删除_CONSOLE, 添加_WINDOWS
2).进入project->setting->Link, 在Project options中将 /subsystem:console改为/subsystem:windows.
3.)保存设置,Rebuild All.

3.还有一种是让人脑恼火的:链接错误 与 LIBCMT冲突,与MSVCRT冲突
解决方法
1).在“配置属性–>链接器–>输入–>忽略特定库”中把libcmt.lib添加进去
2).当发生冲突的是其它自己编译的库函数时,可能是因为lib版本不一致。解决的办法是根据配置重新编译lib,打开项目属性,将“配置属性–>C/C+±->代码生成–>运行时库”设置为“多线程调试 DLL(/MDd)”(因为新工程的设置是这样子)。重新编译

error LNK2019: unresolved external symbol
LNK2019错误一般都是 compile是能找到相应的header (.h)文件,但链接时找不到相应的 lib 库文件(也含dll文件)
问题大致是这样:我在A.h中声明了一个函数,A.cpp中对这个函数进行了实现。在B.h中引用了A.h的头文件,在B.cpp中用到了A.cpp中实现的这个函数。发觉路径什么的都没有问题。就是报错。后来仔细检查才发现,原来我在A.cpp中实现的这个函数和A.h中定义的不一样。A.h中定义的这个函数有3个参数,A.cpp中实现的时候有5个参数,而在B.cpp中调用时考虑的是3个参数的情形。这样链接时就出现找不到函数的外部符号了。提醒大家要仔细。


本文来自 neuqbingoye 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/neuqbingoye/article/details/7299475?utm_source=copy

你可能感兴趣的:(链接错误,链接编译错误)