簡體   English   中英

函數指針,未在此范圍內聲明

[英]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”

為什么會發生? 如何解決? 謝謝。

已編輯

正如Adrian Ratnapala所寫,我在windows.h之前包括winsock2.h。 現在我還有其他錯誤:

src\netredirect.o:netredirect.cpp:(.data+0x18): undefined reference to `WSARecv@28'
src\netredirect.o:netredirect.cpp:(.data+0x1c): undefined reference to `WSARecvFrom@36'
src\netredirect.o:netredirect.cpp:(.data+0x20): undefined reference to `WSASend@28'
src\netredirect.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:\p\giaw\src\pkg\mingwrt-4.0.3-1-mingw32-src\bld/../mingwrt-4.0.3-1-mingw32-src/src/libcrt/crt/main.c:91: undefined reference to `WinMain@16'

該錯誤消息非常明顯。 在使用WSARecv時尚不了解。 可以在第一次使用功能定義之前移動它,或者在第一次使用功能之前添加一個聲明。

如果您似乎認為該函數在范圍內,請嘗試將其像全局函數一樣移動,然后看看會發生什么。(不要將其留在此處,只需查看問題是否確實是因為它不在范圍內)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM