2011-08-14 36 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