2016-06-23 13 views
0

エラーを与えていないが、私はライブラリとリンクしての実行ファイルを作成しようしようとすると、私のコードlws2_32とリンクする代わりに、どのライブラリが欠けていますか?私は、ソケットプログラミングを初めと私はコマンド</p> <pre><code>gcc -c file_name.c </code></pre> <p>すなわちエラーなしで正しく私のプログラムをコンパイルすることができる午前

gcc file_namme.o -o file_name -lws2_32 

によりすなわち、それははinet_ptonへの未定義の参照のエラーをスローを実行している、私は私が行方不明、なぜこのエラーは、次のように私のコードがある

があるのですどのライブラリをリンク知りたいです

#include<stdio.h> 
#include<stdint.h> 
#include<stdlib.h> 
#include<string.h> 
#include<unistd.h> 
#include<winsock2.h> 
#include<windows.h> 
#include<ws2tcpip.h> 
#define WIN32_LEAN_AND_MEAN 
#pragma comment(lib, "Ws2_32.lib") 
WSADATA wsaData; 
void diewithusermsg(const char* msg , const char* detail); 
void diewithsysmsg(const char* msg); 
int main(int argc,char* argv[]) 
{ 

if(argc<3 || argc>4) 
{ 
    diewithusermsg("Parameters","<server address> <Echo String> <port  number>"); 
} 
char* servip=argv[1]; 
char* echostring=argv[2]; 
uint16_t servport=(argc==4)?atoi(argv[3]):7; 
int sock = socket(AF_INET, SOCK_STREAM , IPPROTO_TCP); 
    if(sock<0){ 
     diewithsysmsg("socket() failed"); 
    } 
    struct sockaddr_in servAddr; 
    memset(&servAddr,0,sizeof(servAddr)); 
    servAddr.sin_family=AF_INET; 
    int rtnVal = inet_pton(AF_INET,servip,&servAddr.sin_addr.S_un); 
} 
void diewithusermsg(const char* msg, const char* detail) 
{ 
fputs(msg,stderr); 
fputs(":",stderr); 
fputs(detail,stderr); 
fputs("\n",stderr); 
exit(1); 
} 
void diewithsysmsg(const char*msg) 
{perror(msg); 
exit(1); 
} 
+0

@MichaelWalzでも、私は同じことを言いましたが、file_name.cはそれを編集可能なフォーマット、つまりマシンコードに暗号化していますが、私は見つからないライブラリを探していますか? –

+0

'inet_pton'を' InetPton'に置き換えてみてください –

+0

私はすでにそれを試していましたが、InetPtonのundefienedな参照は、inet_ptonのマイクロソフトのドキュメンタリーでさえ言及していないことを教えていません –

答えて

0

あなたがいないのcygwin(UNIX)1に書いているプログラムが、純粋な窓1。 gingコンパイラを使用することはできませんが、mingw64クロスコンパイラ(cygwinからmingw64)

アーチに応じてmingw64-x86_64-gcc-core(またはmingw64-i686-gcc-core)をインストールし、x86_64- w64-mingw32-gcc.exe(またはi686-w64-mingw32-gcc.exe)をコンパイラとして使用します。

関連する問題

 関連する問題