从winsock.h升级到winsock2.h后出错
我有一个C语言的程序,可以重定向tcp端口。我以前使用的是从winsock.h升级到winsock2.h后出错,c,sockets,visual-studio-2012,C,Sockets,Visual Studio 2012,我有一个C语言的程序,可以重定向tcp端口。我以前使用的是winsock.h,应用程序运行良好 我现在加入了winsock2.h而不是winsock.h,以获得WSAioctl()等高级函数,这些函数在winsock.h中不可用 我已经按照正确的顺序包括了winsock2.h,即在windows.h之前,这样windows.h就不包括winsock.h。我还尝试了避免winsock.h和winsock2.h冲突的其他方法,这些冲突在windows.h之前定义了WIN32\u LEAN\u和\u
winsock.h
,应用程序运行良好
我现在加入了winsock2.h而不是winsock.h
,以获得WSAioctl()
等高级函数,这些函数在winsock.h
中不可用
我已经按照正确的顺序包括了winsock2.h
,即在windows.h
之前,这样windows.h
就不包括winsock.h
。我还尝试了避免winsock.h
和winsock2.h
冲突的其他方法,这些冲突在windows.h
之前定义了WIN32\u LEAN\u和\u MEAN
我还链接了ws2_32.lib
,而不是wsock32.lib
问题:应用程序使用winsock2.h
成功构建,没有错误,但当我在调试模式(或其他模式)下运行程序时,它崩溃并触发多个断点,其中一个断点位于\u CrtIsValidHeapPointer()
。
这些例外情况的可能原因是什么
平台:64位Windows 7 Professional上的VS2012。您的错误与Winsock无关(除非您的代码只是错误地使用Winsock2函数),但还有其他问题。由于您看到运行时错误,是哪一行代码引起了错误?当我尝试使用
closesocket(s)
关闭套接字时,会出现以下错误。错误:HEAP[rinetd.exe]:为RtlValidateHeap(00470000,004B47A0)rinetd.exe指定的无效地址已触发断点。
请提供一个复制错误的地址。