blog error #include "stream.h"

本文描述了一位开发者在编译含有视频流处理程序时遇到的问题:编译器无法找到必要的stream.h文件。作者使用的是最新版SDK,已指定include和lib路径,但仍遇到此问题。文章指出最新版DirectX SDK不再包含DirectShow SDK,需要额外安装Platform SDK来解决该问题。

    不显示删除回复显示所有回复显示星级回复显示得分回复 我有一个接收视频流,并播放的程序,里边引用了一个<stream.h>文件,在这个文件里还引用了好多文件,在编译的时候出错。谁能帮兄弟看看呀
    我安装的是最新06年8月的sdk。
    也指定了include和lib的位置。
    但是编译所有书中附带的样例程序的时候,都提示找不到stream.h。
    这是为什么呢?
    
    最新的directx sdk不包含directshow sdk了,你要另外安装platform sdk。

在Windows系统中,不同的头文件存在情况如下: ### 存在的头文件 - `stdio.h`:是标准输入输出库的头文件,在Windows系统的C和C++开发环境中是存在的,用于基本的输入输出操作,如`printf`和`scanf`等函数。 - `stdlib.h`:包含了一些通用的工具函数,如内存分配、进程控制等,Windows系统的开发环境支持该头文件。 - `string.h`:提供了一系列字符串处理函数,像`strcpy`、`strlen`等,Windows系统有该头文件。 - `ctype.h`:用于字符处理,例如判断字符的类型(字母、数字等),Windows系统支持。 - `time.h`:提供了与时间相关的函数和类型,如`time`、`localtime`等,Windows系统包含此头文件。 - `stdint.h`:定义了一些精确宽度的整数类型,如`int8_t`、`uint32_t`等,Windows系统支持该头文件。 - `errno.h`:用于处理错误码,在Windows系统的开发环境中是存在的。 ### 部分替代或不存在的头文件 - `unistd.h`:这是Unix标准的头文件,提供了许多Unix系统调用和函数,如`fork`、`exec`、`read`、`write`等,Windows系统没有该头文件。不过,Windows提供了一些替代的API来实现类似的功能。 - `sys/socket.h`、`netinet/in.h`、`arpa/inet.h`:这些是Unix/Linux系统中用于网络编程的头文件。在Windows系统中,使用Windows Sockets API进行网络编程,对应的头文件是`winsock2.h`和`ws2tcpip.h`,并且需要链接`ws2_32.lib`库。 - `sys/stat.h`:用于文件状态和属性的查询,Windows系统没有该头文件,但可以使用Windows API函数(如`GetFileAttributes`)来实现类似功能。 - `fcntl.h`:提供文件控制操作,Windows系统没有该头文件,不过可以使用Windows的文件操作API来替代。 以下是一个简单的Windows网络编程示例,使用`winsock2.h`: ```cpp #include <winsock2.h> #include <ws2tcpip.h> #include <stdio.h> #pragma comment(lib, "ws2_32.lib") int main() { WSADATA wsaData; int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { printf("WSAStartup failed: %d\n", iResult); return 1; } struct addrinfo *result = NULL, *ptr = NULL, hints; ZeroMemory(&hints, sizeof(hints)); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; iResult = getaddrinfo("www.example.com", "80", &hints, &result); if (iResult != 0) { printf("getaddrinfo failed: %d\n", iResult); WSACleanup(); return 1; } SOCKET ConnectSocket = INVALID_SOCKET; ptr = result; ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); if (ConnectSocket == INVALID_SOCKET) { printf("socket failed: %ld\n", WSAGetLastError()); freeaddrinfo(result); WSACleanup(); return 1; } iResult = connect(ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen); if (iResult == SOCKET_ERROR) { closesocket(ConnectSocket); ConnectSocket = INVALID_SOCKET; } freeaddrinfo(result); if (ConnectSocket == INVALID_SOCKET) { printf("Unable to connect to server!\n"); WSACleanup(); return 1; } const char *sendbuf = "GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n"; iResult = send(ConnectSocket, sendbuf, (int)strlen(sendbuf), 0); if (iResult == SOCKET_ERROR) { printf("send failed: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return 1; } char recvbuf[512]; iResult = recv(ConnectSocket, recvbuf, 512, 0); if (iResult > 0) { printf("Bytes received: %d\n", iResult); recvbuf[iResult] = '\0'; printf("%s\n", recvbuf); } else if (iResult == 0) { printf("Connection closed\n"); } else { printf("recv failed: %d\n", WSAGetLastError()); } iResult = shutdown(ConnectSocket, SD_SEND); if (iResult == SOCKET_ERROR) { printf("shutdown failed: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return 1; } closesocket(ConnectSocket); WSACleanup(); return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值