在VC ++ 2015中解决“本地定义的符号导入”错误

时间:2016-10-26 10:27:57

标签: c++ visual-studio wdk linker-errors

我有一个小命令行程序,它使用Maxim的OneWire Public Domain API和WinUSB。它使用Win7 / VS2013在我的笔记本电脑上构建得非常好。现在我正试图在我的新台式机上将它移动到Win8.1 / VS2015,我无法让它构建。以下是报告的错误:

1>------ Build started: Project: readtemp5, Configuration: Debug Win32 ------
1>presshum.obj : warning LNK4217: locally defined symbol _printf imported in function _print_array
1>readtemp.obj : warning LNK4049: locally defined symbol _printf imported
1>presshum.obj : warning LNK4217: locally defined symbol _sprintf_s imported in function _ReadPressHum
1>readtemp.obj : warning LNK4049: locally defined symbol _sprintf_s imported
1>temp10.obj : warning LNK4049: locally defined symbol _sprintf_s imported
1>presshum.obj : warning LNK4217: locally defined symbol _sprintf imported in function _ReadPressHum
1>temp10.obj : warning LNK4049: locally defined symbol _sprintf imported
1>readtemp.obj : warning LNK4217: locally defined symbol _fprintf imported in function _main
1>readtemp.obj : error LNK2019: unresolved external symbol __imp____iob_func referenced in function _main
1>readtemp.obj : error LNK2019: unresolved external symbol __imp__scanf referenced in function _mainx
1>readtemp.obj : error LNK2019: unresolved external symbol __imp__sscanf referenced in function _main
1>readtemp.obj : error LNK2001: unresolved external symbol _owErrorStack
1>readtemp.obj : error LNK2001: unresolved external symbol _owErrorPointer
1>readtemp.obj : error LNK2001: unresolved external symbol _owErrorMsg
1>C:\Users\RowanB\Documents\Visual Studio 2015\Projects\readtemp5\readtemp5\Debug\readtemp5.exe : fatal error LNK1120: 6 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

“本地定义的符号导入”错误实际上是什么意思?如何找到导致问题的文件中的哪一行?

带下划线的符号名称有哪些规则?我如何计算原始符号名称(即我将在源文件中看到的名称)是什么?

我想问题可能是桌面PC上缺少某些头文件或库或DLL,或者安装在不同的地方,和/或我没有正确设置项目属性以找到所有的需要的文件。但是,我如何确切地知道什么是错的,以及如何解决它?

我在新PC上安装了WDK,但它没有安装在笔记本电脑上的相同位置(C:\ WinDDK)。我实际上找不到它放在哪里。 WDK文件在哪里?

谢谢 - 罗恩

1 个答案:

答案 0 :(得分:3)

在2012年和2015年编译器之间切换时,我有类似的错误,其中包含一个工作目录(在两个源代码控制提交之间来回切换,其中一个仍在2012年构建,另一个在2015年构建)。修复只是清理解决方案并重建。如果您将整个文件夹复制到新PC,则2013年的中间构建文件可能会导致问题。