我正在鏈接ntdll.lib以使用ZwQueryInformationProcess,並使用多線程運行時庫。錯誤LNK2005:已在ntdll.lib(ntdll.dll)中定義_sprintf
ntdll似乎定義了一些crt函數。所以,當我連接它並使用運行時庫時,我得到鏈接器錯誤。
我可以強制鏈接器使用crt函數並忽略ntdll符號以擺脫錯誤嗎?或者以別的方式解決這個錯誤。
我知道ZwQueryInformationProcess的文檔建議動態加載,但它在靜態庫中使用我的主項目也鏈接到,並且這一直工作很長時間,所以我不想改變它。
謝謝。
我在其他網站上發現了一些關於此問題的討論,例如:http://www.codeguru.com/forum/archive/index.php/t-414274.html,但沒有看到任何似乎提供了良好解決方案的內容。有一些提到更改鏈接順序,但我看不到如何通過項目設置更改運行時庫鏈接的順序。
你從哪裏得到ntdll.lib? ntdll.dll會導出sprintf,但不包含前導下劃線。這不應該導致_sprintf的鏈接器錯誤。 – 2011-01-25 15:08:23
我連接到C:\ WINDDK \ 7600.16385.0 \ lib \ wxp \ i386 \ ntdll.lib,我意識到在該DDK中有更高版本的lib,但我的程序需要在xp上運行。我檢查過,這個有_sprintf,但是我見過的其他ntdll.lib不會導出它。 – 2011-01-25 15:26:48