Ws2_32.dllをつかうには?

解決


Me  2006-08-05 17:12:08  No: 96171

エクセルのVBAでWSAStartup()関数を、実行すると・・・

実行時エラー  '53':
ファイルが見つかりません:ws2_32.lib

というメッセージボックスがでてきて実行できません。
宣言は下記のとおりです。

Private Const WSADESCRIPTION_LEN  As Long = 256
Private Const WSASYS_STATUS_LEN  As Long = 128

Private Type WSAData
   wVersion As Integer
   wHighVersion As Integer
   szDescription(0 To WSADESCRIPTION_LEN) As Byte
   szSystemStatus(0 To WSASYS_STATUS_LEN) As Byte
   iMaxSockets As Long
   iMaxUdpDg As Long
   lpVendorInfo As Long
End Type

Private Declare Function WSAStartup Lib "ws2_32.lib" (ByVal wVersionRequested As Integer, ByRef lpWSAData As WSAData) As Long

エクセルのバージョンは2000で、マシンはWin2000です。
Lib "ws2_32.lib"
のところを
Lib "c:\winnt\system32\ws2_32.lib"
としてもだめでした。もちろん「ws2_32.lib」は「c:\winnt\system32」にあります。

WSAStartup()を呼び出す前に、
ChDrive "C"
ChDir "C:\WINNT\system32"
としてカレントディレクトリをファイルの場所に移動してもだめでした。

どなたか解決策ごご存知でしたらご教授ください。お願いします。


暇じろー  2006-08-05 18:07:29  No: 96172

Ws2_32.dllを使ったことはないのですが
なぜDLLを使いたいのにタイプライブラリを参照してるのでしょう?

Private Declare Function WSAStartup Lib "ws2_32.lib" _
  (ByVal wVersionRequested As Integer, ByRef lpWSAData As WSAData) As Long

を下記に訂正しては?

Private Declare Function WSAStartup Lib "Ws2_32.dll" _
  (ByVal wVersionRequested As Integer, ByRef lpWSAData As WSAData) As Long


Me  2006-08-05 18:24:13  No: 96173

うっ・・
libとdllを間違えているなんて・・
ご指摘ありがとうございました。解決しました。


K.J.K.  2006-08-05 21:47:57  No: 96174

Libファイルは、(静的にリンクされるコード)ライブラリファイルです。
DLLファイルは、動的にリンクされるコードライブラリファイルです。
タイプライブラリというのは、VBなどで「参照設定」できる型情報
(定数、変数のみの構造体、COMインターフェース、DLLからのStaticな関数)
をその内部で定義してあるもので、単独だと普通の拡張子はtlbですよね。

# 混ぜるな危険、ということで。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加