2012-04-02 8 views
0

RtlIpv4StringToAddressExW()をリンクできません。これは私のプログラムの簡略版です。RtlIpv4StringToAddressExW関数をリンクするには?

#include <WinSock2.h> 
#pragma comment(lib, "ws2_32.lib") 

#include <Windows.h> 
#include <cstdio> 

#include <MSTcpIP.h> 

HRESULT doMAin() 
{ 
    LONG error; 
    PSOCKADDR_IN sin4; 

    error = RtlIpv4StringToAddressExW(
     L"127.0.0.1", 
     TRUE, 
     &sin4->sin_addr, 
     &sin4->sin_port); 

    return S_OK; 
} 

そして、私は取得していますエラーは次のとおりです。

main.obj : error LNK2001: unresolved external symbol [email protected] 

誰が間違っている可能性が何を知っていますか?

+0

ようになりINGのは、[ 'inet_addr'](http://msdn.microsoft.com/en-us/library/windows/desktop/ms738563(使用しない何らかの理由がありますv = vs.85).aspx)?私はそれがポートを処理しないことを知っているが、あなたのサンプルコードはそれを(とリテラルを使用して渡されません...)。 – Deanna

+0

@Deanna、この機能は一般的ではありませんか? – kiewic

+0

私は 'inet_addr'だけを使っています。 – Deanna

答えて

0

"Windows Vista用にリリースされたMicrosoft Windowsソフトウェア開発キット(SDK)には、RtlIpv4StringToAddressEx関数を含むインポートライブラリは含まれていません。RtlIpv4StringToAddressEx関数は、Windows Driver Kit(WDK)に含まれるNtdll.libインポートライブラリ)また、アプリケーションは、GetModuleHandle関数とGetProcAddress関数を使用してNtdll.dllから関数ポインタを取得し、この関数を呼び出すこともできます。

docs

libにプラグマコメントがあった場合は、Ntdll.libになります。ドキュメントを繰り返すには、DDKから取得するか、またはGetProcAddressをサッカーから取得します。

GetProcAddress

typedef LONG (NTAPI *pfRtlIpv4StringToAddressEx)(PCWSTR,BOOLEAN,IN_ADDR *,PUSHORT); 
    pfRtlIpv4StringToAddressEx pRtlIpv4StringToAddressEx = (pfRtlIpv4StringToAddressEx)GetProcAddress(GetModuleHandle("ntdll.dll"), "RtlIpv4StringToAddressExW"); 
    error = (*pRtlIpv4StringToAddressEx)(
    L"127.0.0.1", 
    TRUE, 
    &sin4->sin_addr, 
    &sin4->sin_port); 
+0

驚くばかり!ありがとう! – kiewic

関連する問題