none
ソケット関数がリンクできない RRS feed

  • 質問

  • ソケット関数がリンクできない

    Windowsフォームアプリケーションで、Winsocketのソケット関数を使ったプログラムをビルドしていますが、
    コンパイルはwaringはあるものの成功し、その後のリンク段階で、次のようなエラーになってしまいます。

    1>リンクしています...
    1>xxxSoft-V2.obj : error LNK2028: 未解決のトークン (0A00000C) "extern "C" int __stdcall connect(unsigned int,struct sockaddr const *,int)" (?connect@@$$J212YGHIPBUsockaddr@@H@Z) が関数 "int __clrcall c_setup(char *,int)" (?c_setup@@$$FYMHPADH@Z) で参照されました。
    ...Soft-V2.exe : fatal error LNK1120: 外部参照 12 が未解決です。

    使っているソケット関数は、
    connect(),socket(),gethostbyaddr()等ですが、ソケット関数群は、すべて上記のconnect()のリンクエラーと同様のエラーメッセージです。

    解決方法をご教示よろしくお願いします。

    sdtafx.hには次の2行を追加しております。

    #include <stdio.h>
    #include <winsock2.h>

    VC++ExpressのLibディレクトリには、ws2_32.libが存在するのも確認していますが、上記のソケット関数群がリンクされません。

    (BorlandC++5.5で、ws2_32.lib をスタティックリンクしたプログラムはうまくリンクでき、正常実行に通信ができています。)

    2006年10月18日 2:21

回答

  • 明にリンクさせないとダメとか。

    試しに、sdtafx.h(でなくてもいいいけど)に
    #pragma comment( lib, "ws2_32.lib" )

    と記述してビルドしてみてください。

    また、プロジェクトの プロパティ ページ の リンカ の 入力 の 追加の依存ファイルに libファイルを指定することも出来ます。
    (デフォルトは「親またはプロジェクト規定値からの継承」になっている)
    2006年10月18日 2:32

すべての返信

  • 明にリンクさせないとダメとか。

    試しに、sdtafx.h(でなくてもいいいけど)に
    #pragma comment( lib, "ws2_32.lib" )

    と記述してビルドしてみてください。

    また、プロジェクトの プロパティ ページ の リンカ の 入力 の 追加の依存ファイルに libファイルを指定することも出来ます。
    (デフォルトは「親またはプロジェクト規定値からの継承」になっている)
    2006年10月18日 2:32
  •  蒼の洞窟 さんからの引用
    明にリンクさせないとダメとか。

    試しに、sdtafx.h(でなくてもいいいけど)に
    #pragma comment( lib, "ws2_32.lib" )


    と記述してビルドしてみてください。

    また、プロジェクトの プロパティ ページ の リンカ の 入力 の 追加の依存ファイルに libファイルを指定することも出来ます。
    (デフォルトは「親またはプロジェクト規定値からの継承」になっている)

     

    まことにありがとうざざいます。

    その#pragma文を加えたらリンクできました。

    実行し、TCPのコネクト処理まで実行できたとこです。これから通信の実体処理に進めます。

    感謝 感謝・・・

    追伸:

    さきほど 処女作となった、Winsock2.0を使用したWindowsフォーム形式の

    TCPファイル転送印刷プログラムができました。

    GUI式で作ったのは初めてでとてもうれしいです。

    ご教示戴きまし誠にありがとうございました。

     

    2006年10月18日 3:00