函数指针,未在此范围内声明
Function pointer, was not declared in this scope
我使用函数指针
MyWSARecvProc OriginalWSARecvProc = (MyWSARecvProc) WSARecv;
函数WSARecv在winsock2.h中声明:
WINSOCK_API_LINKAGE int WINAPI WSARecv(SOCKET,
LPWSABUF, DWORD, LPDWORD, LPDWORD, LPWSAOVERLAPPED,
LPWSAOVERLAPPED_COMPLETION_ROUTINE);
我在我的文件中包含了winsock2.h,但是有错误:
错误:'WSARecv'未在此范围内声明
为什么会发生?如何解决这个问题?谢谢。
我在windows.h之前包含了winsock2.h,正如Adrian Ratnapala所写。现在我有其他错误:
srcnetredirect.o:netredirect.cpp:(.data+0x18): undefined reference to `WSARecv@28'
srcnetredirect.o:netredirect.cpp:(.data+0x1c): undefined reference to `WSARecvFrom@36'
srcnetredirect.o:netredirect.cpp:(.data+0x20): undefined reference to `WSASend@28'
srcnetredirect.o:netredirect.cpp:(.data+0x24): undefined reference to `WSASendTo@36'
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../../mingw32/lib/libmingw32.a(main.o): In function `main':
e:pgiawsrcpkgmingwrt-4.0.3-1-mingw32-srcbld/../mingwrt-4.0.3-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `WinMain@16'
错误消息非常明确。在您使用它的时候,WSARecv是未知的。或者在第一次使用函数之前移动函数定义,或者在第一次使用函数之前添加声明。
如果您认为该函数在作用域中,请尝试将其像全局函数一样移动,看看会发生什么。(不要把它留在那里,看看问题是否真的是因为它超出了作用域)
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明