VS出现error LNK2005,error C4430,error C2011

1、error LNK2005:

在头文件“a.h”中定义了结构体类型和函数定义,生成工程的时候,出现LNK2005错误。

经过排查是a.h头文件在多个头文件中引入造成的。因为这样会使头文件a中定义的函数进行多次重复定义;解决方法是把在头文件a中定义的函数定义在a.cpp文件。

若在a.h头文件中定义变量int  a,也会导致变量a重复定义。

注:LNK2005的错误也可参考https://blog.csdn.net/u012145971/article/details/50268129

2、error C4430

该错误可能由以下问题之一导致:

(1)没有包含头文件。

(2)缺少宏定义,导致项目不能根据宏定义确定使用哪一个头文件。

(3)函数声明有返回值,函数未写返回值。

(4)头文件包含顺序错误。

(5)头文件互相包含。

  该错误参考于https://blog.csdn.net/skdkjzz/article/details/17072277

3、error C2011

该问题以error C2011: “sockaddr_in”:“struct”类型重定义为例:

该问题是由于windows.h和winsock2.h存在有类型重定义,方法以下2种方法之一,推荐第二种:

(1)#include<windows.h>之前 #include <winsock2.h>

(2)在C/C++预处理中添加WIN32_LEAN_AND_MEAN

遇到问题介绍:

1、遇到C4430,填写命令宏HAVE_WINSOCK_H,让项目选择winsock.h头文件;但将别人模块代码引入自己的项目中时,出现了C2011错误。

原因是再解决C4430问题时,选择的winsock.h头文件,但别人模块代码中选择的是winsock2.h,最后将解决C4430的宏换成HAVA_WINSOCK2_H,让项目选择winsock2.h,解决了该问题。

出现该问题原因包含头文件与其他模块头文件包含冲突导致。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值