2011-08-14 33 views
0

我应该使用什么静态库链接以使用NormalizeString()函数?与WinNLS链接

与MSDN上记录的大多数函数相比,使用该函数所需的静态库未声明。我尝试使用从DLL派生的名称:normaliz.lib,并且它成功链接,但随后在运行时弹出一条消息,说我的计算机上找不到Normalization.dll,并且进程已关闭。

+0

这是Normaliz.dll。仅适用于Vista及更高版本。如果你打算以XP为目标,那么一定要正确设置_WIN32_WINNT宏值,以便在目标操作系统中无法使用的函数出现编译错误。 –

+0

@Hans:是的,我已经在检查''_WIN32_WINNT''。我在Windows 7上测试。 –

+0

当我在Windows 7上试用此软件时正常工作。您使用的是哪个版本的Windows SDK?我在6.0中试过,在调试时我看到它在kernel32.dll中用ntdll.dll中的RtlNormalizeString实现。这使得文档微妙地错了,normaliz.lib而不是normaliz.dll –

回答

1

由Hans Passant指出,正确的导入库是normaliz.lib。看来我的设置中存在一些问题。

我使用的是Windows SDK v6.0A。切换到Windows SDK v7.0A后,我的问题停止了。

+0

刚刚在另一台计算机上出现此问题。升级到V7.0A也解决了那里的问题。 –

0

您链接页面底部的链接指出下载包含implib和dll资源。您可能必须显示该DLL,或者至少将其放入PATH中。

+0

额外的下载是针对Windows XP的。我在Windows 7上,它应该是自Windows Vista以来内置的。 –

+0

仅供参考:下行链路不包含导入库(因为它似乎已经正常)。 – peterchen