0

ライブラリ (ws2_32) とヘッダー ファイル (ws2tcpip.h) がありますが、何らかの理由で、ヘッダーにない関数がライブラリに含まれています。メソッドの署名を特定して、自分でヘッダーに含める方法はありますか?

asdf@fdsa ~$ strings /usr/lib/w32api/libws2_32.a | grep -i 'inet_*ntop'
_inet_ntop@16
__imp__inet_ntop@16
_InetNtopW@16
__imp__InetNtopW@16
inet_ntop                      <<< I need this one
_inet_ntop@16
__imp__inet_ntop@16
InetNtopW                      <<< or this one
_InetNtopW@16
__imp__InetNtopW@16
asdf@fdsa ~$ grep -i -B 4 -A 2 -R "ntop" /usr/include/w32api/ws2tcpip.h
asdf@fdsa ~$                  

リンカーはこれを検証する必要があるため、これは可能であるはずです。

参考:GCC/CygwinでのInetNtopとws2tcpip.h

4

1 に答える 1

0

いいえ、ありません。ライブラリを逆アセンブルし、多くの当て推量を行わずにはいられません。一般的に、それは絶望的だと考えてください。

ただし、関数は および のようInetNtopWinet_ntop文書化されている ( MSDN ) ため、関数のシグネチャが何であるかがわかります。WS2tcpip.h関数は Vista を必要とするものとしてマークされていることに注意してください。実際に、それらがガードで囲まれていることがわかります。

#if (NTDDI_VERSION >= NTDDI_VISTA)

そのため、Vista サポート用のプリプロセッサ マクロを定義しない限り、プロトタイプは取得できません。

// Require Vista
#define WINVER 0x0600
#define _WIN32_WINNT 0x0600
#include <WS2tcpip.h>

または、 を使用することもできますWSAAddressToString。これは同様の機能ですが、完全には互換性がありません。はWSAAddressToStringWindows 2000 以降で使用できます。

脚注: W バージョンのtakeとtakeを除いて、InetNtopWinet_ntop関数は基本的に同じものです。多くの Windows 機能がこの方法で複製されます。wchar_tinet_ntopchar

于 2012-06-16T23:59:04.113 に答える