我正在尝试使用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中的符号生成有所不同?如何通过编译和链接默认头文件和库来解决问题?
感谢。
答案 0 :(得分:1)
不要使用 DDK
来构建用户模式组件。 DDK
代表Driver Development Kit
。将其用于用户模式是未定义的行为。请改用SDK
。