Discussion:
winsock
(too old to reply)
yokohairi
2005-10-13 10:14:03 UTC
Permalink
Microsoft Visual C++ Toolkit 2003 を使って winsock アプリケーションを作ることは可能でしょうか?

もし可能であれば、cl.exe を使ってコンパイルを実行する際、どのライブラリをどのように指定すれば winsock.h が有効になるのでしょうか。
cl main01.cpp ws2_32.lib
などととしても

main01.cpp
main01.cpp(11) : fatal error C1083: Cannot open include file: 'winsock.h':
No such file or directory

となってしまい、困っています。
tamatama
2005-10-13 10:55:39 UTC
Permalink
"yokohairi" wrote in message news:1B04E81A-34CC-4831-A02E-***@microsoft.com...
SET PATH=C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;C:\Program
Files\Microsoft SDK\Bin;C:\Program Files\Microsoft SDK\Bin\Win64;%PATH%
SET INCLUDE=C:\Program Files\Microsoft Visual C++ Toolkit
2003\include;C:\Program Files\Microsoft SDK\Include;%INCLUDE%
SET LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib;C:\Program
Files\Microsoft SDK\Lib;%LIB%

などのように環境変数は設定されているのでしょうか?


プラットフォームSDKもインストールされているとして…

http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en

http://msdn.microsoft.com/visualc/vctoolkit2003/default.aspx?pull=/library/en-us/dv_vstechart/html/vctoolkitcmd.asp
yokohairi
2005-10-14 04:11:38 UTC
Permalink
ありがとうございました。

Visual C++ Toolkit 2003 はインストールしていましたが、
Microsoft Platform SDK はインストールしていませんでしたので、
導入し、環境変数もセットしました。

その結果、
cl hello.c ws2_32.lib
のようなコマンドで、winsock2.h を呼び出すコードでもコンパイルが通ることが確認できました。

【追加の質問】Winsock を利用するためには Microsoft Platform SDK が必須なのでしょうか
tamatama
2005-10-14 04:23:55 UTC
Permalink
Post by yokohairi
【追加の質問】Winsock を利用するためには Microsoft Platform SDK が必須なのでしょうか
Win32 APIを呼び出すためにはMicrosoft Platform SDK が必要です。
WinsockもWin32の一部なので。
tamatama
2005-10-14 06:15:03 UTC
Permalink
Post by tamatama
Post by yokohairi
【追加の質問】Winsock を利用するためには Microsoft Platform SDK が必須なのでしょうか
Win32 APIを呼び出すためにはMicrosoft Platform SDK が必要です。
WinsockもWin32の一部なので。
あっ、訂正!

もしかして、別に実行環境(ターゲットマシン)がある場合を指しているのなら、Microsoft
Platform SDK は不要ですよ。
UETA, Shin-ichi
2005-10-14 05:51:25 UTC
Permalink
こんにちは、植田です。
Post by yokohairi
【追加の質問】Winsock を利用するためには Microsoft Platform SDK が必須なのでしょうか
WinSockのDLLが実行環境にあるかぎり、Platform SDKがなくても
呼び出すことは可能です。
ただ、とんでもなく面倒くさいので、素直にPlatform SDKが提供する
ヘッダファイルやインポートライブラリを利用したほうが楽、というわけ
です。些細なミスも避けられますし。

これはWinSockにかぎらず、他のAPIについても同じことが言えます。
まれにヘッダファイルやインポートライブラリが提供されていないもの
もあるので、そのようなときは自力で呼び出したりします。

# undocumentedなものとか、最新のWindowsでしか利用できない
# 機能であるとか、事情は様々です。
--
植田システム設計事務所
Ueta System Design Studio
http://www.usdesign.jp/
植田真一
mailto:***@usdesign.jp
UETA, Shin-ichi
2005-10-14 06:30:40 UTC
Permalink
どうも、植田です。自己フォローです ^^;)
Post by UETA, Shin-ichi
WinSockのDLLが実行環境にあるかぎり、Platform SDKがなくても
呼び出すことは可能です。
可能は可能なんですが、せめてPlatform SDKのコアな部分だけでも
ないとちょっと辛すぎますね。
Visual C++ Toolkit 2003 がどのような構成なのかは未確認なので
知りませんが、Platform SDKのコアに相当するものさえ添付されて
いないとなると、その場合、Platform SDKはかぎりなく必須に近い
です。WinSock云々以前の問題ですね。

# ちょっとググってみたかぎりでは添付されてなさそう...?
--
植田システム設計事務所
Ueta System Design Studio
http://www.usdesign.jp/
植田真一
mailto:***@usdesign.jp
yokohairi
2005-10-14 09:59:05 UTC
Permalink
uetaさん、shigiharaさん、tamatamaさん、皆様ありがとうございました。
よくわかりました。

Takeshi SHIGIHARA
2005-10-14 00:46:12 UTC
Permalink
tamatama氏も指摘なされているように、各種の環境変数が
必要となります。
環境変数は、インクルードファイルの位置、ライブラリの
位置などをコンパイラ、リンカなどに指示するために使用
されます。
コンパイラのバージョンがVC 6か .NET2003かなどで多少の
違いがあることがありますが、いずれのコンパイラでも、
インストールされたディレクトリの中に環境変数を設定する
ためのバッチファイルなどがあるはずです。

たとえば、VC6では vcvars32.bat というバッチファイルが
ありますし、.NET2003では vsvars32.bat というファイルが
あります。
これをコマンドプロンプトで、まず起動してあげれば環境が
整えられるはず。

わたしの場合には (VC6の例では)
リンク先 : %comspec% /k "C:\Program Files\Microsoft Visual Studio\VC98\Bin\vcvars32.bat"
のようなショートカットを作り、これを起動することにして
います。

----- Takeshi SHIGIHARA
***@tka.att.ne.jp
***@po.jah.ne.jp -----
うまい、早い、安い/2つだけ選べ--RFC1925.
Loading...