2

我正在尝试libxml2使用 VS 2012 编译和链接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

__imp__vsnprintf,__imp___vsnprintf在 VS 2012 和 VS 2005 上分别用于相同的功能(注意VS 2005_之前的额外标记vsnprintf)。我在构建日志中查看了 VS 2005 和 VS 2012 的编译器和链接器选项。两者都是一样的。将showIncludes选项传递给编译器后,我看到 VS 2005 和 VS 2012 上的源文件使用的头文件集完全相同。

为什么 VS 2012 中的符号生成仍然不同?如何在不编译和链接默认头文件和库的情况下解决问题?

谢谢。

4

1 回答 1

1

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

于 2012-11-21T07:46:51.447 回答