windows.h和WinSock2.h出现重定义API】的更多相关文章

经常遇到编译socket程序的时候生成几百个错误 以下是出错后的错误信息: >c:\program files\microsoft sdks\windows\v6.0a\include\ws2def.h() : warning C4005: “AF_IPX”: 宏重定义 > c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h() : 参见“AF_IPX”的前一个定义 >c:\program files\micro…
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问题,自己写的一个库里要用到ws2tcpip,这个头文件第一个包含的头文件就是winsock2.h把它放到windows前,库是能成功编译了,但当我在一个wxWidgets中调用它时,又出现那个让人厌烦的错误 ““sockaddr”: “struct”类型重定义”明显是wxWidgets先包含了win…
Windows平台下用C++做网络开发很多时候都会同时包含这两个头文件,如若顺序不当(windows.h先于winsock2.h)就会出现很多莫名其妙的错误.诸如: c:\program files (x86)\microsoft sdks\windows\v7.0a\include\ws2def.h(91): warning C4005: "AF_IPX": 宏重定义 1>          c:\program files (x86)\microsoft sdks\windo…
解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition 1>…\include\winsock.h(460) : see previous definition of 'AF_IPX' … 或者这个错误 #error "ws2tcpip.h is …
问题:彻底无语了,不小心某个文件包含了windows.h头文件,而windows.h文件里面包含着winsock.h文件, 如果你下次使用winsock2.h文件时,位置不对,然后编译器会给你一大堆重定义错误问题. 初级解决办法: 把winsock2.h文件放在任何可能包含winsock.h文件(尤其是windows.h文件,它就包含了winsock.h文件)的前面,因为winsock2.h头文件有这样的宏定义: #ifndef _WINSOCK2API_#define _WINSOCK2API…
有两种常用的解决方法:1.把WinSock2.h写在windows.h之前   2.使用宏定义#define WIN32_LEAN_AND_MEAN…
#define WIN32_LEAN_AND_MEAN #include <windows.h>…
[问题] ws2def.h(91): warning C4005: “AF_IPX”: 宏重定义: winsock2.h(460) : 参见“AF_IPX”的前一个定义 [原因] windows.h头文件中已经包含有winsock.h,winsock.h和winsock2.h定义了一样的宏. [解决方案] 方案一:定义宏WIN32_LEAN_AND_MEAN 属性->配置属性->c/c++ ->预处理器->预处理器定义:添加WIN32_LEAN_AND_MEAN 如果该宏定义存在,…
windows.h和winsock2.h有类型重定义我是知道的,本来就一个库来说没问题,把winsock2放到windows.h前或先定义WIN32_LEAN_AND_MEAN都能解决问题但现的出了问题,自己写的一个库里要用到ws2tcpip,这个头文件第一个包含的头文件就是winsock2.h把它放到windows前,库是能成功编译了,但当我在一个wxWidgets中调用它时,又出现那个让人厌烦的错误 ““sockaddr”: “struct”类型重定义”明显是wxWidgets先包含了win…
原帖地址:https://blog.csdn.net/clever101/article/details/100163301 windows.h和winsock2.h存在有类型重定义,往往体现在VC程序中包含winsock2.h时出现编译错误: error C2011: “sockaddr_in”:“struct”类型重定义 网友提出的解决办法是将 #include<windows.h>之前 #include <winsock2.h> 这个不是好的解决办法,因为很多程序比如MFC程…
解决办法一. #if defined(_WIN32) # ifndef GLUT_BUILDING_LIBextern _CRTIMP void __cdecl exit(int); 上面是glut.h中对exit的使用,意思是如果没有定义宏‍GLUT_BUILDING_LIB,就使用它的exit,那我们就在项目的属性——预处理器 里定义这个宏,这样就不执行glut.h中的exit了,而只执行stdlib.h中的exit.这样也就不会冲突了.对了,还要在附加依赖项里手动加上‍glut32.lib…
问题:生成时提示 gl.h中出现一堆错误,如 error C2144: 语法错误 : "void"的前面应有";" error C2182: "APIENTRY" : 非法使用"void"类型 error C2086: "int APIENTRY" : 重定义 error C2146: 语法错误 : 缺少";"(在标识符"glClearStencil"的前面) 解决办…
如果我们在工程中使用了afxsock.h,但在其它的地方又加了些 使用winsock2.h,哈哈,VC会告诉你一大堆错误,大意就是有定义重复,该怎么解决? 由于MFC的SOCKET类使用的是Winsock1.1,而Winsock2.h是2.0的版本,两个版本中的一些定义就会出现冲突,解决的方式就是在stdafx.h中先定义winsock2.h,然后在定义afxsock.h 使用时还需要加载库文件:#pragma comment(lib, "ws2_32.lib") #if !defin…
为什么.h文件中不能定义全局变量? 原因: 存在多次创建变量.如果头文件中可以定义全局变量,那么每个包含该头文件的文件里都会有该全局变量的定义.因为C语言的include是直接将文件嵌入到include这个地方的. 解决办法: ​在头文件使用 extern 来声明该全局变量,然后在任意一个.cpp文件中定义该变量.全局变量是存放在静态区的.会被默认初始化为0. 原文:https://blog.csdn.net/jchnlau/article/details/49774599 C语言:全局变量在多…
使用了预编译头依然出现error LNK2005:***obj已在***obj中定义 造成该问题的可能性比较多,本人将在今后遇到时添加进来,今天先放出本人遇到的一种情况. 多重包含含有变量定义的.h文件所造成 这个现象很容易重新,首先新建一个1.h文件,然后在里面写下如下代码 #pragma once int i = 0; 然后新建一个1.cpp,里面代码如下: #include "1.h" #include "1.h" 再新建一个2.cpp,代码如下: #incl…
今天写了一个简单的类,定义在 .h 文件中, 类很简单就将其成员函数定义在了一起(class类后面).运行的时候出现了如下图所示的编译错误(error LNK2005) 查资料,大部分都是说需要加上 #pragma once  防止重定义,但是我之前就加了的,明显不是这个问题.耽搁了会儿,想到可以把函数实现放到 cpp 文件试试,果然放到 cpp 中就好使了.…
最近用到 OpenGL的第三方库Glut,碰到了exit()这个函数在stdlib.h与glut.h两个头文件中重复定义的情况,解决方案如下: 打开glut.h,找到exit()函数定义的地方(144行左右),替换为以下内容: #if defined(_WIN32) # ifndef GLUT_BUILDING_LIB #if _MSC_VER >= 1200 _CRTIMP __declspec(noreturn) void __cdecl exit(int); #else _CRTIMP v…
工程中添加 Winsock2.h 报错 1>c:\program files (x86)\windows kits\8.1\include\shared\ws2def.h(100): warning C4005: 'AF_IPX' : macro redefinition1> c:\program files (x86)\windows kits\8.1\include\um\winsock.h(452) : see previous definition of 'AF_IPX'1>c:…
把虚线框里面的内容粘贴进文档文本里面 ---------------------------------------------------------------------------------------------------------- #include <termios.h>#include <stdio.h> static struct termios old, new; /* Initialize new terminal i/o settings */void…
//#include <unistd.h> #ifndef _UNISTD_H #define _UNISTD_H  #include <io.h>  #include <process.h>…
warning C4005: “AF_IPX”: 宏重定义warning C4005: “AF_IPX”: 宏重定义 解决方法: 由以上代码可以看出如果在没有定义WIN32_LEAN_AND_MEAN宏的大前 提下windows.h有可能包含winsock.h 头文件,因此我们得出一个很简单 的解决方法就是在包含<windows.h>之前定义WIN32_LEAN_AND_MEAN宏,如 下所示: #define WIN32_LEAN_AND_MEAN #include <windows.…
发现重复定义是由于从两个不同的路径包含了同一个头文件而引起的,同事也建议从另外一个路径打开工程试试, 这才慢慢发现了原因.这个原因可能有些拗口,而事实上要出现这种错误也有些"曲折", 让我从不同情况下的类型重定义来解释一下吧. 我总结的类型重定义情况有三.一.没有在文件头加#pragma once指示符.Type1.h: //#pragma onceclass Type{}; Main.cpp: #include "Type1.h"#include "Ty…
error C2011: “timespec”:“struct”类型重定义 C++ pthread pthread.h 中的 timespec 和time.h 中的 结构定义重复了 ,同时两个头文件中的条件编译条件不同,所以造成结构重复定义,简单快速见效的解决方法就是注释pthread.h 头文件中的struct timespce 定义 warning C4477: “printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 拥有了类型“pthread_t” print 中…
最近在使用osg和qt开发,在集成osg时候因为我使用的qt版本为非opengl的版本,导致qt自己封了一遍opengl的一些基类变量如double 这时候就会跟osg中声明的opengl的类型冲突,提示重定义了不同的基类行. 解决方案: 使用opengl版本的qt库 =..= 在QT中使用C++编写的lib库 需要修改pro文件,主要问题是引用路径的问题 _pro_file_pwd 代表了工程文件当前目录 可以通过在qt creator 的帮助中 搜索 variables 来查看相关详细介绍,…
1>------ 已启动生成: 项目: OSG_3_1_osgViewer应用基础, 配置: Debug x64 ------1>cl : 命令行 warning D9002: 忽略未知选项“/SAFESEH:NO”1> osgViewer应用基础1.cpp1>e:\opensourcegraph\openscenegraph_install\include\gl\gl.h(1157): error C2144: 语法错误:“void”的前面应有“;”1>e:\opensou…
这里的问题实质是我们在头文件中直接定义全局变量或者函数,却分别在主函数和对应的cpp文件中包含了两次,于是在编译的时候这个变量或者函数被定义了两次,问题就出现了,因此,我们应该形成一种编码风格,即: 在一个头文件中要想定义一个全局变量,除非我们能够保证这个头文件仅仅只被一个cpp文件包含(也就是main函数所在的那个cpp文件),否则,我们都应该将对应的定义放在这个头文件对应的cpp文件中,仅仅在这个头文件中声明他,这样才能够保证这个变量不被重定义 下面是我找出问题的博客,转载自:C++中重定义…
sys/types.h 是Unix/Linux系统的基本系统数据类型的头文件,含有size_t,time_t,pid_t等类型. 在应用程序源文件中包含 <sys/types.h> 以访问 _LP64 和 _ILP32 的定义.此头文件还包含适当时应使用的多个基本派生类型.尤其是以下类型更为重要: clock_t 表示系统时间(以时钟周期为单位). dev_t 用于设备号. off_t 用于文件大小和偏移量. ptrdiff_t 是一种带符号整型,用于对两个指针执行减法运算后所得的结果. si…
#ifndef 在头文件中的作用 在一个大的软件工程里面,可能会有多个文件同时包含一个头文件,当这些文件编译链接成一个可执行文件时,就会出现大量 “重定义”的错误. 在头文件中使用#ifndef #define #endif能避免头文件的重定义. 方法:例如要编写头文件test.h 在头文件开头写上两行: #ifndef _TEST_H #define _TEST_H//一般是文件名的大写 头文件结尾写上一行:#endif 这样一个工程文件里同时包含两个test.h时,就不会出现重定义的错误了.…
二.        概念理解 在线重定义用于对表的逻辑或者物理结构的修改,而且在修改时不影响表的可用性与传统方式相比.当一个表被重定义时,会被锁定为exclusive mode很短一段时间,这段时间的长短取决于表的依赖关系,和复杂度,而且这些对用户来说都是透明的. 注:如果对重定义期间表是否可用没有要求的话,可以使用更简单的方式.使用ALTER TABLE MOVE这个命令. 在线重定义时基于物化视图的,在同步数据时就是应用物化视图日志刷新物化视图,使得临时表中的数据和原表中的数据保持一致. 三…
Oracle 支持在线重定义表,也就是说我们可以在修改表结构(DDL)的同时进行相关的DQL.DML操作,使得前端的DML根本感觉不到表结构实际上已经发生了变化,对于用户而言是完全透明的.当然在线重定义期间,前端性能会稍微有所下降.Oracle提供的重定义包dbms_redefinition即是用与完成此操作.其实质是Oracle使用了智能物化视图及物化视图日志的方式.在对象结构重组期间,表现为一个本地对象的复制,重组期间发生的任何变化都会被刷新到最新. 1.在线重定义表的主要功能:     修…