c++编译报错

1、error:C4996在这里插入图片描述

搭建的kylin工程Release编译没有问题,但是修改为debug的时候,发现编译报错。

  • 解决方案:在 属性=>C/C++ =>预处理器=>预处理器定义中添加下面这个就可以编译通过了。
    _SCL_SECURE_NO_WARNINGS
    又看了一下项目中的配置,在预处理器定义中还有下列配置:
    _CRT_SECURE_NO_WARNINGS、_USEDLL、PA_FAST、PROJECT_KYLIN、GAME_SERVER;不知道干嘛用的,先记录下,回头研究。

2、包含了mysql.h以后,my_socket报错未定义

其实是找不到SOCKET,在#include<mysql.h>之前添加好#include<WinSock2.h>就好了。

3、error C2065: “NULL”: 未声明的标识符

包含#include <stdio.h>即可

4、C1189:#error:“No Target Architecture”。

第一次(KNetManager报错):是因为包含了 #include <processthreadsapi.h>,去掉即可。
第二次(KLogManager报错):   #include <processnv.h>   ... 行1
                 #include <wincon.h>        ... 行2
                 #include <windows.h>      ... 行3
注释第3行,打开1、2行,就会报错C1189。   
注释第1、2行,打开第3行,报错解决。

5、未定义标志符SOCKET

最近在写一点网络的代码,原先的代码可以编译通过,后面修改了一下代码,搬移了一个工程。发现编译不过了。且报错有点诡异,提示“未定义标志符SOCKET”。
啥图片的描述?在这里插入图片描述
既然报错没有定义,那么就去相关定义的头文件里看一看,咋回事。
在这里插入图片描述
这里一共有两个定义的头文件,<winsock.h>和<WinSock2.h>。跳转进去以后,发现代码确实都是浅灰色(浅灰色代码不参与编译,SOCKET确实相当于未定义)
在这里插入图片描述
在这里插入图片描述
往上拖一拖,看下从哪里开始,代码变浅灰色了。
在这里插入图片描述
再看宏 WINAPI_FAMILY_PARRTITION 做了啥事情?
在这里插入图片描述
这就明白了,这里需要的是 WINAPI_PARITION_DESKTOP。再看下我搬移代码的新工程属性配置:

啥也不说了,再直接新建了个工程,配置为WINAPI_PARITION_DESKTOP,然后将代码搬移到新工程中。
在这里插入图片描述

6、C2375,accept:重定义,不同的连接

报错一共有59个,是因为库冲突了。
#include<windows.h>和#include<WinSock2.h>,对于accept()函数都有自己的定义实现。
修正方法是:把导致编译出错的两个文件互换了一下顺序就好了。
原先是:

#include "base/ev_thread.h"
#include "driver_redis.h"

改成

#include "driver_redis.h"
#include "base/ev_thread.h"

7.LINK2005,函数未定义。

工程中要使用hiredis.lib,但是hiredis对windows的支持不太友好。后来找了别人写的win32_interop,可以支持redis在windows中调用异步命令。但是一直编译不过,是因为工程是C++模式,但是源码是.c文件,所以要使用extern “C”{}。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值