neuqbingoye的专栏

A person who never made mistake never tried anything new

错误 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartu

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

 

产生这个问题可能的原因
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个参数的情形。这样链接时就出现找不到函数的外部符号了。提醒大家要仔细。



阅读更多
个人分类: 编程技术
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭