链接器错误(VS 2005 vs VS 2012)

时间:2012-11-21 02:09:29

标签: c++ visual-studio-2005 visual-studio-2012 linker-errors

我正在尝试使用VS 2012构建libxml2库来编译和链接DDK 7标头和库。使用VS 2005它可以很好地构建,但是使用VS 2012,我收到链接器错误。仔细检查生成的符号 -

在VS 2005上,

Found __imp___vsnprintf
    Referenced in error.obj
    Referenced in xmlreader.obj
    Referenced in xmlwriter.obj
    Referenced in xmlstring.obj
    Loaded msvcrt.lib(msvcrt.dll)

在VS 2012上,

error.obj     : error LNK2019: unresolved external symbol __imp__vsnprintf  
                               referencedin function ___xmlRaiseError
xmlreader.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
xmlwriter.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
xmlstring.obj : error LNK2001: unresolved external symbol __imp__vsnprintf
对于相同的功能,分别在VS 2012和VS 2005上

__imp__vsnprintf__imp___vsnprintf(请注意VS 2005中_之前的额外vsnprintf标记。我在构建日志中查看了VS 2005和VS 2012的编译器和链接器选项。两者都是一样的。通过传递给编译器的showIncludes选项,我看到VS 2005和VS 2012上用于源文件的标题集完全相同。

为什么VS 2012中的符号生成有所不同?如何通过编译和链接默认头文件和库来解决问题?

感谢。

1 个答案:

答案 0 :(得分:1)

不要使用 DDK来构建用户模式组件。 DDK代表Driver Development Kit。将其用于用户模式是未定义的行为。请改用SDK