前言:
大一的時候乙個學長給我推薦mingw(minimalist gnufor windows) developer studio,後來就一直用了下去,感覺比vc++和dev c好用,比vs更輕量級吧。
最近需要寫乙個簡單的winsockets client 來測試伺服器,發現編譯問題。
客戶端**:
#include #include using namespace std;
#pragma comment(lib, "ws2_32.lib")
#define port 5154
#define ip_address "127.0.0.1"
int main(int argc, char * argv)
clientsocket = socket(af_inet, sock_stream, ipproto_tcp);
if (clientsocket == invalid_socket)
serveraddr.sin_family = af_inet;
serveraddr.sin_addr.s_addr = inet_addr(ip_address);
serveraddr.sin_port = htons(port);
memset(serveraddr.sin_zero, 0x00, 8);
ret = connect(clientsocket, (struct sockaddr*)&serveraddr, sizeof(serveraddr));
if (ret == socket_error)
while (true)
{ cout << "please input message:"<
1.wsastartup完成winsocket服務初始化
2.建立套接字
3.設定伺服器網路引數
4.發起連線
5.傳送資料
6.關閉套接字關閉winsockets服務
undefined reference to `wsastartup@8'
undefined reference to ******x
網上有這樣的解決方案:
在**前面加上:
#pragma comment(lib, "ws2_32.lib")
發現並沒有什麼作用。
後來得知,mingw沒有#pragma comment這樣的預處理命令。
最終解決辦法:
project -> settings -> links -> extra linking options
加上:-lws2_32
靜態聯編與動態聯編
在c 中,多型性主要是通過函式過載實現的。過載函式是指程式中對同名函式進行呼叫時,編譯器會根據函式引數的型別和個數,決定該呼叫哪一段函式 來處理這個函式呼叫。這種把函式呼叫與適當的函式 相對應的動作,叫做聯編。聯編分為靜態聯編和動態聯編。在編譯階段決定執行哪個同名的被呼叫函式,稱為靜態聯編。在編譯階...
靜態聯編和動態聯編
聯編是指乙個電腦程式自身彼此關聯 使乙個 源程式經過編譯 連線,成為乙個可執行程式 的過程,在這個聯編過程中,需要確定程式中的操作呼叫 函式呼叫 與執行該操作 函式 的 段之間的對映關係,按照聯編所進行的階段不同,可分為靜態聯編和動態聯編。靜態聯編 呼叫函式和被調函式在程式編譯時,他們在記憶體中的位...
靜態聯編和動態聯編
聯編就是將模組或者函式合併在一起生成可執行 的處理過程,同時對每個模組或者函式呼叫分配記憶體位址,並且對外部訪問也分配正確的記憶體位址,它是電腦程式彼此關聯的過程。按照聯編所進行的階段不同,可分為兩種不同的聯編方法 靜態聯編和動態聯編。靜態聯編是指在編譯階段就將函式實現和函式呼叫關聯起來,因此靜態聯...