
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
gethostname関数の引数の型が異なっているようですが、確認していますか?
コンパイラが出力したエラーメッセージをよく確認しましょう。
#pragma comment(lib,"ws2_32.lib")
がgccで使えるかは、マニュアルやgccの参考書等で確認してみてください。
No.1
- 回答日時:
まず質問の書き方から:
「認識できない」という表現はときにより非常にあいまいな使い方をされることがあります. あなたはこの言葉で何を言わんとしているのでしょうか. また, 「エラーになる」というのであればおそらくエラーメッセージが出ていることでしょうから, そのメッセージを書くようにしてください. エラーメッセージの内容が完全に理解できているのでない限り, 勝手に「このような」などと解釈するのではなくメッセージを一字一句そのまま書くようにしてください.
さておき, プラグマの書式は処理系に依存するので, 「あるプラグマは処理系A では使えるけど処理系B では使えない」ということはあり得ます. そして, 処理系では「自分が理解できないプラグマは何も言わず無視」です.
ということで, そのプラグマが VC2008Express では使えるけど gcc では使えなくって, 結果としてそのプラグマに対して VC2008Express が提供している機能が使えなくなっているだけではないでしょうか? そのプラグマにより VC2008Express が行う処理を gcc でも与えてやればいいと思います.
この回答への補足
動かしたいプログラムはこれです
ーーーー
#include <iostream>
#include <ws2tcpip.h>
#pragma comment(lib,"ws2_32.lib")
using namespace std;
int main() {
int dstSocket;
struct sockaddr_in dstAddr;
WSADATA data;
WSAStartup(MAKEWORD(2,0), &data);
// sockaddr_in 構造体のセット
memset(&dstAddr, 0, sizeof(dstAddr));
dstAddr.sin_port = htons(80);
dstAddr.sin_family = AF_INET;
dstAddr.sin_addr.s_addr = inet_addr("127.0.0.1");
// ソケットの生成
dstSocket = socket(AF_INET, SOCK_STREAM, 0);
***中略***
// Windows でのソケットの終了
closesocket(dstSocket);
WSACleanup();
return(0);
}
ーーーー
コンパイルするとエラーになる
***
**** Build of configuration Default for project t001 ****
make all
g++ -O2 -g -Wall -fmessage-length=0 -c -o ***.o t001.cpp
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/ws2tcpip.h:19,
from ***.cpp:2:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:103:2: warning: #warning "fd_set and associated macros have been defined in sys/types. This may cause runtime problems with W32 sockets"
In file included from /usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/ws2tcpip.h:19,
from ***.cpp:2:
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../include/w32api/winsock2.h:635: error: declaration of C function `int gethostname(char*, int)' conflicts with
/usr/include/sys/unistd.h:206: error: previous declaration `int gethostname(char*, size_t)' here
***.cpp:3: warning: ignoring #pragma comment
***.cpp: In function `int main()':
***.cpp:32: warning: unused variable 'n'
make: *** [***.o] Error 1
正直参りました。プログラマになる夢をあきらめるしかないのでしょうか。いま私は絶望の中にいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ソフトの開発言語を調べる方法
-
C++DLLの明示的リンクに関して
-
DLLファイルの逆コンパイラにつ...
-
unsigned long long 型のフォー...
-
sprintfの書式について
-
#pragma プリプロセス について
-
[C++]VC2008のC++...
-
組み込みソフト。ROM領域にデータ
-
未使用引数の注意文出力を回避...
-
H8/3664でのEEPROMの使用について
-
リリースモードとデバッグモー...
-
C++でデスクトップGUIアプリ開...
-
変数の内容がコロコロ変わる、...
-
FORTRANのおすすめコンパイラ
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
Excelのエラーで困ってます。
-
VBAを何回も作り直して、容量が...
-
C言語でヘッダファイルにグロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
unsigned long long 型のフォー...
-
ソフトの開発言語を調べる方法
-
C++でデスクトップGUIアプリ開...
-
printfなど、標準関数のソース...
-
リリースモードとデバッグモー...
-
C++Builder → Visual C++ 移植...
-
<conio.h>?
-
パーサとコンパイラの違いって?
-
PICでのI2C通信でのマスタ、ス...
-
C言語はC言語でできている?
-
PIC18Fで変数の受け渡し...
-
COBOLの論理演算子について質問...
-
cc と gcc の違い
-
組み込みソフト。ROM領域にデータ
-
templateクラスの宣言と定義を...
-
変数の内容がコロコロ変わる、...
-
Out Of Near Heap Space?
-
最初に使う変数のゼロクリアに...
-
MPI プログラム
おすすめ情報