Code
char* sendbuf = "this is a test";
报错信息
E0144 a value of type “const char *” cannot be used to initialize an entity of type “char *”
Error C2440 ‘initializing’: cannot convert from ‘const char [15]’ to ‘char *’
Solution:
char sendbuf [] = "this is a test";Error LNK2001
报错信息
Error LNK2001 无法解析的外部符号
出现这种错误可以考虑从几个方面解决:
-
函数声明了,但是没有实现。将该函数实现即可。
-
用到了一个库函数,但是在项目里面没有把库加入进来
-
->和.的区别
-
.是成员运算符主要用在c++中用来确定类对象和成员之间的关系
-
-> 是指针的一种用法,是用来指向某个变量的地址.
-
报错信息
无法解析的外部符号 imp 函数名,符号在函数…
解析:原因是找不到lib库文件,或者lib库文件版本不对导致找不到某函数
解决办法:
在预加头文件处,添加预预编译指令
#pragma comment(lib,"lib文件名或路径")
如果是LNK2019 无法解析的外部符号 _main,该符号在函数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) 中被引用,就说明是代码中缺少main函数(不止是C++,C#中缺少main函数也无法作为应用程序运行的)。
C28251 问题描述原来的代码,如下
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
return 0
}
报错信息如下
解决方法C28251 “WinMain”的批注不一致: 此实例包含 无批注。请参见 c:program files (x86)windows kits10include10.0.18362.0umwinbase.h(933)。
根据报错信息,打开c:program files (x86)windows kits10include10.0.18362.0umwinbase.h看一下“WinMain”的定义如下。
WinMain (
_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPSTR lpCmdLine,
_In_ int nShowCmd
);
原来少了_In_,_In_opt_之类的批注
所以,改为下面这样即可。
int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPTSTR lpCmdLine,
_In_ int nCmdShow)
{
return 0
}
C4996
报错信息
C4996 ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
解决方法
- 报错信息中已经告知了解决方法了
- 最简单的方法是:添加下面语句到报错的文件的开头
#define _WINSOCK_DEPRECATED_NO_WARNINGS
- 另外一种方法是在工程属性-PreprocessorDefinitions中定义



