我无法链接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 __imp__RtlIpv4StringToAddressExW@16
有谁知道可能出现什么问题?
答案 0 :(得分:1)
“包含RtlIpv4StringToAddressEx函数的导入库未包含在为Windows Vista发布的Microsoft Windows软件开发工具包(SDK)中.RtlIpv4StringToAddressEx函数包含在Windows驱动程序工具包(WDK)中包含的Ntdll.lib导入库中应用程序还可以使用GetModuleHandle和GetProcAddress函数从Ntdll.dll中检索函数指针并调用此函数。“
来自docs的。
如果有一个lib到pragma评论,它将是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);