int WSAStartup(
__in WORD wVersionRequested,
__out LPWSADATA lpWSAData
);
WSAStartup
格 式: int PASCAL FAR WSAStartup( WORD wVersionRequested, LPWSADATA lpWSAData );
參 數(shù): wVersionRequested 欲使用的 Windows Sockets API 版本
lpWSAData 指向 WSADATA 資料的指標(biāo)
傳回值: 成功 – 0
失敗 - WSASYSNOTREADY / WSAVERNOTSUPPORTED / WSAEINVAL
說明: 此函式「必須」是應(yīng)用程式呼叫到 Windows Sockets DLL 函式中的第一個,也唯有此函式呼叫成功後,才可以再呼叫其他 Windows Sockets DLL 的函式。此函式亦讓使用者可以指定要使用的 Windows Sockets API 版本,及獲取設(shè)計(jì)者的一些資訊。程式中我們要用 Winsock 1.1,所以我們在程式中有一段為:
WSAStartup((WORD)((1<<8)|1),(LPWSADATA) &WSAData)
其中 ((WORD)((1<<8)|1) 表示我們要用的是 Winsock 「1.1」版本,而WSAData 則是用來儲存由系統(tǒng)傳回的一些有關(guān)此一 Winsock Stack 的資料。
The WSAStartup function initiates use of the Winsock DLL by a process.
在使用WSAStartup的使用出現(xiàn)了下面的問題:
源碼:
#include "stdafx.h"
#include<windows.h>
int main()
{
WSADATA wsa={0};
WSAStartup(MAKEWORD(2,2),&wsa);
return 0;
}
出現(xiàn)的錯誤信息:
錯誤 1 error LNK2019: 無法解析的外部符號 _WSAStartup@8,該符號在函數(shù) _main 中被引用 CompletePortDemo.obj CompletePortDemo
解決方法:添加#pragma comment(lib,"ws2_32.lib")
正確代碼:
#include "stdafx.h"
#include<windows.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
WSADATA wsa={0};
WSAStartup(MAKEWORD(2,2),&wsa);
return 0;
}