Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 链接器错误(VS 2005 VS 2012)_C++_Visual Studio 2005_Visual Studio 2012_Linker Errors - Fatal编程技术网

C++ 链接器错误(VS 2005 VS 2012)

C++ 链接器错误(VS 2005 VS 2012),c++,visual-studio-2005,visual-studio-2012,linker-errors,C++,Visual Studio 2005,Visual Studio 2012,Linker Errors,我正在尝试使用VS 2012编译和链接DDK 7头文件和库来构建libxml2库。VS 2005的构建很好,但VS 2012的链接器出现错误。关于生成符号的密切检查- 2005年11月14日 Found __imp___vsnprintf Referenced in error.obj Referenced in xmlreader.obj Referenced in xmlwriter.obj Referenced in xmlstring.obj Lo

我正在尝试使用VS 2012编译和链接DDK 7头文件和库来构建libxml2库。VS 2005的构建很好,但VS 2012的链接器出现错误。关于生成符号的密切检查-

2005年11月14日

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上输入vsnprintf、VS 2012和VS 2005,请注意VS2005中vsnprintf前的额外标记。我在构建日志中查看了VS2005和VS2012的编译器和链接器选项。两者都是一样的。通过将showIncludes选项传递给编译器,我看到了VS2005和VS2012上用于源文件的完全相同的头集

为什么VS 2012中的符号生成仍然不同?如何解决这个问题,而不针对默认头文件和lib进行编译和链接


谢谢。

请勿将DDK用于构建用户模式组件。DDK代表驱动程序开发工具包。将其用于用户模式是未定义的行为。请改用SDK。

您是否检查过所有库都是使用相同的RuntimeLibrary DLL、MT/ST、Debug/Release参数构建的?另外,您链接的MSVCRT.lib的版本是什么?@MichaelSh使用/MD、/D-NDEBUG编译。并且msvcrt.lib在DDK 7/lib/wxp中可用。请尝试使用VS2012所在文件夹中的msvcrt.libinstalled@MichaelSh在我的情况下,这不是一个选项,因为使用编译器选项/MD链接默认的msvcrt.lib需要随应用程序一起提供msvcrt110.dll。但是,我用记事本打开了msvcrt.lib,VS 2012编译器正在查找的符号出现了。您可以发布链接器的完整命令行吗?是否将NODEFAULTLIB设置为忽略msvcrt.lib,并将非默认msvcrt.lib显式列为依赖项?