我正在链接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